home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / TeXsource / web2ctex / ctex / c / itex < prev    next >
Encoding:
Text File  |  1990-06-08  |  58.2 KB  |  2,335 lines

  1. #define EXTERN extern
  2. #include "texd.h"
  3.  
  4. initialize () {
  5.     initialize_regmem 
  6.   schar i  ; 
  7.   integer k  ; 
  8.   hyphpointer z  ; 
  9.   xchr [ 32 ] = ' ' ; 
  10.   xchr [ 33 ] = '!' ; 
  11.   xchr [ 34 ] = '"' ; 
  12.   xchr [ 35 ] = '#' ; 
  13.   xchr [ 36 ] = '$' ; 
  14.   xchr [ 37 ] = '%' ; 
  15.   xchr [ 38 ] = '&' ; 
  16.   xchr [ 39 ] = '\'' ; 
  17.   xchr [ 40 ] = '(' ; 
  18.   xchr [ 41 ] = ')' ; 
  19.   xchr [ 42 ] = '*' ; 
  20.   xchr [ 43 ] = '+' ; 
  21.   xchr [ 44 ] = ',' ; 
  22.   xchr [ 45 ] = '-' ; 
  23.   xchr [ 46 ] = '.' ; 
  24.   xchr [ 47 ] = '/' ; 
  25.   xchr [ 48 ] = '0' ; 
  26.   xchr [ 49 ] = '1' ; 
  27.   xchr [ 50 ] = '2' ; 
  28.   xchr [ 51 ] = '3' ; 
  29.   xchr [ 52 ] = '4' ; 
  30.   xchr [ 53 ] = '5' ; 
  31.   xchr [ 54 ] = '6' ; 
  32.   xchr [ 55 ] = '7' ; 
  33.   xchr [ 56 ] = '8' ; 
  34.   xchr [ 57 ] = '9' ; 
  35.   xchr [ 58 ] = ':' ; 
  36.   xchr [ 59 ] = ';' ; 
  37.   xchr [ 60 ] = '<' ; 
  38.   xchr [ 61 ] = '=' ; 
  39.   xchr [ 62 ] = '>' ; 
  40.   xchr [ 63 ] = '?' ; 
  41.   xchr [ 64 ] = '@' ; 
  42.   xchr [ 65 ] = 'A' ; 
  43.   xchr [ 66 ] = 'B' ; 
  44.   xchr [ 67 ] = 'C' ; 
  45.   xchr [ 68 ] = 'D' ; 
  46.   xchr [ 69 ] = 'E' ; 
  47.   xchr [ 70 ] = 'F' ; 
  48.   xchr [ 71 ] = 'G' ; 
  49.   xchr [ 72 ] = 'H' ; 
  50.   xchr [ 73 ] = 'I' ; 
  51.   xchr [ 74 ] = 'J' ; 
  52.   xchr [ 75 ] = 'K' ; 
  53.   xchr [ 76 ] = 'L' ; 
  54.   xchr [ 77 ] = 'M' ; 
  55.   xchr [ 78 ] = 'N' ; 
  56.   xchr [ 79 ] = 'O' ; 
  57.   xchr [ 80 ] = 'P' ; 
  58.   xchr [ 81 ] = 'Q' ; 
  59.   xchr [ 82 ] = 'R' ; 
  60.   xchr [ 83 ] = 'S' ; 
  61.   xchr [ 84 ] = 'T' ; 
  62.   xchr [ 85 ] = 'U' ; 
  63.   xchr [ 86 ] = 'V' ; 
  64.   xchr [ 87 ] = 'W' ; 
  65.   xchr [ 88 ] = 'X' ; 
  66.   xchr [ 89 ] = 'Y' ; 
  67.   xchr [ 90 ] = 'Z' ; 
  68.   xchr [ 91 ] = '[' ; 
  69.   xchr [ 92 ] = '\\' ; 
  70.   xchr [ 93 ] = ']' ; 
  71.   xchr [ 94 ] = '^' ; 
  72.   xchr [ 95 ] = '_' ; 
  73.   xchr [ 96 ] = '`' ; 
  74.   xchr [ 97 ] = 'a' ; 
  75.   xchr [ 98 ] = 'b' ; 
  76.   xchr [ 99 ] = 'c' ; 
  77.   xchr [ 100 ] = 'd' ; 
  78.   xchr [ 101 ] = 'e' ; 
  79.   xchr [ 102 ] = 'f' ; 
  80.   xchr [ 103 ] = 'g' ; 
  81.   xchr [ 104 ] = 'h' ; 
  82.   xchr [ 105 ] = 'i' ; 
  83.   xchr [ 106 ] = 'j' ; 
  84.   xchr [ 107 ] = 'k' ; 
  85.   xchr [ 108 ] = 'l' ; 
  86.   xchr [ 109 ] = 'm' ; 
  87.   xchr [ 110 ] = 'n' ; 
  88.   xchr [ 111 ] = 'o' ; 
  89.   xchr [ 112 ] = 'p' ; 
  90.   xchr [ 113 ] = 'q' ; 
  91.   xchr [ 114 ] = 'r' ; 
  92.   xchr [ 115 ] = 's' ; 
  93.   xchr [ 116 ] = 't' ; 
  94.   xchr [ 117 ] = 'u' ; 
  95.   xchr [ 118 ] = 'v' ; 
  96.   xchr [ 119 ] = 'w' ; 
  97.   xchr [ 120 ] = 'x' ; 
  98.   xchr [ 121 ] = 'y' ; 
  99.   xchr [ 122 ] = 'z' ; 
  100.   xchr [ 123 ] = '{' ; 
  101.   xchr [ 124 ] = '|' ; 
  102.   xchr [ 125 ] = '}' ; 
  103.   xchr [ 126 ] = '~' ; 
  104.   xchr [ 0 ] = ' ' ; 
  105.   xchr [ 127 ] = ' ' ; 
  106.   {register integer for_end; i = 1 ; for_end = 31 ; if ( i <= for_end) do 
  107.     xchr [ i ] = chr ( i ) ; 
  108.   while ( i++ < for_end ) ; } 
  109.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  110.     xord [ chr ( i ) ] = 127 ; 
  111.   while ( i++ < for_end ) ; } 
  112.   {register integer for_end; i = 1 ; for_end = 126 ; if ( i <= for_end) do 
  113.     xord [ xchr [ i ] ] = i ; 
  114.   while ( i++ < for_end ) ; } 
  115.   interaction = 3 ; 
  116.   deletionsallowed = true ; 
  117.   errorcount = 0 ; 
  118.   helpptr = 0 ; 
  119.   useerrhelp = false ; 
  120.   interrupt = 0 ; 
  121.   OKtointerrupt = true ; 
  122.     ;
  123. #ifdef DEBUG
  124.   wasmemend = memmin ; 
  125.   waslomax = memmin ; 
  126.   washimin = memmax ; 
  127.   panicking = false ; 
  128. #endif /* DEBUG */
  129.   nestptr = 0 ; 
  130.   maxneststack = 0 ; 
  131.   curlist .modefield = 1 ; 
  132.   curlist .headfield = memtop - 1 ; 
  133.   curlist .tailfield = memtop - 1 ; 
  134.   curlist .auxfield = -65536000L ; 
  135.   curlist .mlfield = 0 ; 
  136.   curlist .pgfield = 0 ; 
  137.   shownmode = 0 ; 
  138.   pagecontents = 0 ; 
  139.   pagetail = memtop - 2 ; 
  140.   mem [ memtop - 2 ] .hh .v.RH = 0 ; 
  141.   lastglue = 65535L ; 
  142.   lastpenalty = 0 ; 
  143.   lastkern = 0 ; 
  144.   pagesofar [ 7 ] = 0 ; 
  145.   pagemaxdepth = 0 ; 
  146.   {register integer for_end; k = 5267 ; for_end = 5976 ; if ( k <= for_end) 
  147.   do 
  148.     xeqlevel [ k ] = 1 ; 
  149.   while ( k++ < for_end ) ; } 
  150.   nonewcontrolsequence = true ; 
  151.   hash [ 258 ] .v.LH = 0 ; 
  152.   hash [ 258 ] .v.RH = 0 ; 
  153.   {register integer for_end; k = 259 ; for_end = 3524 ; if ( k <= for_end) do 
  154.     hash [ k ] = hash [ 258 ] ; 
  155.   while ( k++ < for_end ) ; } 
  156.   saveptr = 0 ; 
  157.   curlevel = 1 ; 
  158.   curgroup = 0 ; 
  159.   curboundary = 0 ; 
  160.   maxsavestack = 0 ; 
  161.   magset = 0 ; 
  162.   curmark [ 0 ] = 0 ; 
  163.   curmark [ 1 ] = 0 ; 
  164.   curmark [ 2 ] = 0 ; 
  165.   curmark [ 3 ] = 0 ; 
  166.   curmark [ 4 ] = 0 ; 
  167.   curval = 0 ; 
  168.   curvallevel = 0 ; 
  169.   radix = 0 ; 
  170.   {register integer for_end; k = 0 ; for_end = 16 ; if ( k <= for_end) do 
  171.     readopen [ k ] = 2 ; 
  172.   while ( k++ < for_end ) ; } 
  173.   condptr = 0 ; 
  174.   iflimit = 0 ; 
  175.   curif = 0 ; 
  176.   ifline = 0 ; 
  177.   TEXformatdefault = " plain.fmt" ; 
  178.   {register integer for_end; k = 0 ; for_end = fontmax ; if ( k <= for_end) 
  179.   do 
  180.     fontused [ k ] = false ; 
  181.   while ( k++ < for_end ) ; } 
  182.   nullcharacter .b0 = 0 ; 
  183.   nullcharacter .b1 = 0 ; 
  184.   nullcharacter .b2 = 0 ; 
  185.   nullcharacter .b3 = 0 ; 
  186.   totalpages = 0 ; 
  187.   maxv = 0 ; 
  188.   maxh = 0 ; 
  189.   maxpush = 0 ; 
  190.   lastbop = -1 ; 
  191.   doingleaders = false ; 
  192.   deadcycles = 0 ; 
  193.   curs = -1 ; 
  194.   halfbuf = dvibufsize / 2 ; 
  195.   dvilimit = dvibufsize ; 
  196.   dviptr = 0 ; 
  197.   dvioffset = 0 ; 
  198.   dvigone = 0 ; 
  199.   downptr = 0 ; 
  200.   rightptr = 0 ; 
  201.   adjusttail = 0 ; 
  202.   packbeginline = 0 ; 
  203.   emptyfield .v.RH = 0 ; 
  204.   emptyfield .v.LH = 0 ; 
  205.   nulldelimiter .b0 = 0 ; 
  206.   nulldelimiter .b1 = 0 ; 
  207.   nulldelimiter .b2 = 0 ; 
  208.   nulldelimiter .b3 = 0 ; 
  209.   alignptr = 0 ; 
  210.   curalign = 0 ; 
  211.   curspan = 0 ; 
  212.   curloop = 0 ; 
  213.   curhead = 0 ; 
  214.   curtail = 0 ; 
  215.   {register integer for_end; z = 0 ; for_end = 307 ; if ( z <= for_end) do 
  216.     {
  217.       hyphword [ z ] = 0 ; 
  218.       hyphlist [ z ] = 0 ; 
  219.     } 
  220.   while ( z++ < for_end ) ; } 
  221.   hyphcount = 0 ; 
  222.   outputactive = false ; 
  223.   insertpenalties = 0 ; 
  224.   aftertoken = 0 ; 
  225.   longhelpseen = false ; 
  226.   formatident = 0 ; 
  227.   {register integer for_end; k = 0 ; for_end = 17 ; if ( k <= for_end) do 
  228.     writeopen [ k ] = false ; 
  229.   while ( k++ < for_end ) ; } 
  230.   editnamestart = 0 ; 
  231.     ;
  232. #ifdef INITEX
  233.   {register integer for_end; k = 1 ; for_end = 19 ; if ( k <= for_end) do 
  234.     mem [ k ] .cint = 0 ; 
  235.   while ( k++ < for_end ) ; } 
  236.   k = 0 ; 
  237.   while ( k <= 19 ) {
  238.       
  239.     mem [ k ] .hh .v.RH = 1 ; 
  240.     mem [ k ] .hh.b0 = 0 ; 
  241.     mem [ k ] .hh.b1 = 0 ; 
  242.     k = k + 4 ; 
  243.   } 
  244.   mem [ 6 ] .cint = 65536L ; 
  245.   mem [ 4 ] .hh.b0 = 1 ; 
  246.   mem [ 10 ] .cint = 65536L ; 
  247.   mem [ 8 ] .hh.b0 = 2 ; 
  248.   mem [ 14 ] .cint = 65536L ; 
  249.   mem [ 12 ] .hh.b0 = 1 ; 
  250.   mem [ 15 ] .cint = 65536L ; 
  251.   mem [ 12 ] .hh.b1 = 1 ; 
  252.   mem [ 18 ] .cint = -65536L ; 
  253.   mem [ 16 ] .hh.b0 = 1 ; 
  254.   rover = 20 ; 
  255.   mem [ rover ] .hh .v.RH = 65535L ; 
  256.   mem [ rover ] .hh .v.LH = 1000 ; 
  257.   mem [ rover + 1 ] .hh .v.LH = rover ; 
  258.   mem [ rover + 1 ] .hh .v.RH = rover ; 
  259.   lomemmax = rover + 1000 ; 
  260.   mem [ lomemmax ] .hh .v.RH = 0 ; 
  261.   mem [ lomemmax ] .hh .v.LH = 0 ; 
  262.   {register integer for_end; k = memtop - 13 ; for_end = memtop ; if ( k <= 
  263.   for_end) do 
  264.     mem [ k ] = mem [ lomemmax ] ; 
  265.   while ( k++ < for_end ) ; } 
  266.   mem [ memtop - 10 ] .hh .v.LH = 7359 ; 
  267.   mem [ memtop - 9 ] .hh .v.RH = 256 ; 
  268.   mem [ memtop - 9 ] .hh .v.LH = 0 ; 
  269.   mem [ memtop - 7 ] .hh.b0 = 1 ; 
  270.   mem [ memtop - 6 ] .hh .v.LH = 65535L ; 
  271.   mem [ memtop - 7 ] .hh.b1 = 0 ; 
  272.   mem [ memtop ] .hh.b1 = 255 ; 
  273.   mem [ memtop ] .hh.b0 = 1 ; 
  274.   mem [ memtop ] .hh .v.RH = memtop ; 
  275.   mem [ memtop - 2 ] .hh.b0 = 10 ; 
  276.   mem [ memtop - 2 ] .hh.b1 = 0 ; 
  277.   avail = 0 ; 
  278.   memend = memtop ; 
  279.   himemmin = memtop - 13 ; 
  280.   varused = 20 ; 
  281.   dynused = 14 ; 
  282.   eqtb [ 3525 ] .hh.b0 = 100 ; 
  283.   eqtb [ 3525 ] .hh .v.RH = 0 ; 
  284.   eqtb [ 3525 ] .hh.b1 = 0 ; 
  285.   {register integer for_end; k = 1 ; for_end = 3524 ; if ( k <= for_end) do 
  286.     eqtb [ k ] = eqtb [ 3525 ] ; 
  287.   while ( k++ < for_end ) ; } 
  288.   eqtb [ 3526 ] .hh .v.RH = 0 ; 
  289.   eqtb [ 3526 ] .hh.b1 = 1 ; 
  290.   eqtb [ 3526 ] .hh.b0 = 116 ; 
  291.   {register integer for_end; k = 3527 ; for_end = 4055 ; if ( k <= for_end) 
  292.   do 
  293.     eqtb [ k ] = eqtb [ 3526 ] ; 
  294.   while ( k++ < for_end ) ; } 
  295.   mem [ 0 ] .hh .v.RH = mem [ 0 ] .hh .v.RH + 530 ; 
  296.   eqtb [ 4056 ] .hh .v.RH = 0 ; 
  297.   eqtb [ 4056 ] .hh.b0 = 117 ; 
  298.   eqtb [ 4056 ] .hh.b1 = 1 ; 
  299.   {register integer for_end; k = 4057 ; for_end = 4321 ; if ( k <= for_end) 
  300.   do 
  301.     eqtb [ k ] = eqtb [ 3525 ] ; 
  302.   while ( k++ < for_end ) ; } 
  303.   eqtb [ 4322 ] .hh .v.RH = 0 ; 
  304.   eqtb [ 4322 ] .hh.b0 = 118 ; 
  305.   eqtb [ 4322 ] .hh.b1 = 1 ; 
  306.   {register integer for_end; k = 4323 ; for_end = 4577 ; if ( k <= for_end) 
  307.   do 
  308.     eqtb [ k ] = eqtb [ 4322 ] ; 
  309.   while ( k++ < for_end ) ; } 
  310.   eqtb [ 4578 ] .hh .v.RH = 0 ; 
  311.   eqtb [ 4578 ] .hh.b0 = 119 ; 
  312.   eqtb [ 4578 ] .hh.b1 = 1 ; 
  313.   {register integer for_end; k = 4579 ; for_end = 4626 ; if ( k <= for_end) 
  314.   do 
  315.     eqtb [ k ] = eqtb [ 4578 ] ; 
  316.   while ( k++ < for_end ) ; } 
  317.   eqtb [ 4627 ] .hh .v.RH = 0 ; 
  318.   eqtb [ 4627 ] .hh.b0 = 119 ; 
  319.   eqtb [ 4627 ] .hh.b1 = 1 ; 
  320.   {register integer for_end; k = 4628 ; for_end = 5266 ; if ( k <= for_end) 
  321.   do 
  322.     eqtb [ k ] = eqtb [ 4627 ] ; 
  323.   while ( k++ < for_end ) ; } 
  324.   {register integer for_end; k = 0 ; for_end = 127 ; if ( k <= for_end) do 
  325.     {
  326.       eqtb [ 4627 + k ] .hh .v.RH = 12 ; 
  327.       eqtb [ 5139 + k ] .hh .v.RH = k ; 
  328.       eqtb [ 5011 + k ] .hh .v.RH = 1000 ; 
  329.     } 
  330.   while ( k++ < for_end ) ; } 
  331.   eqtb [ 4640 ] .hh .v.RH = 5 ; 
  332.   eqtb [ 4659 ] .hh .v.RH = 10 ; 
  333.   eqtb [ 4719 ] .hh .v.RH = 0 ; 
  334.   eqtb [ 4664 ] .hh .v.RH = 14 ; 
  335.   eqtb [ 4754 ] .hh .v.RH = 15 ; 
  336.   eqtb [ 4627 ] .hh .v.RH = 9 ; 
  337.   {register integer for_end; k = 48 ; for_end = 57 ; if ( k <= for_end) do 
  338.     eqtb [ 5139 + k ] .hh .v.RH = k + 28672 ; 
  339.   while ( k++ < for_end ) ; } 
  340.   {register integer for_end; k = 65 ; for_end = 90 ; if ( k <= for_end) do 
  341.     {
  342.       eqtb [ 4627 + k ] .hh .v.RH = 11 ; 
  343.       eqtb [ 4627 + k + 32 ] .hh .v.RH = 11 ; 
  344.       eqtb [ 5139 + k ] .hh .v.RH = k + 28928 ; 
  345.       eqtb [ 5139 + k + 32 ] .hh .v.RH = k + 28960 ; 
  346.       eqtb [ 4755 + k ] .hh .v.RH = k + 32 ; 
  347.       eqtb [ 4755 + k + 32 ] .hh .v.RH = k + 32 ; 
  348.       eqtb [ 4883 + k ] .hh .v.RH = k ; 
  349.       eqtb [ 4883 + k + 32 ] .hh .v.RH = k ; 
  350.       eqtb [ 5011 + k ] .hh .v.RH = 999 ; 
  351.     } 
  352.   while ( k++ < for_end ) ; } 
  353.   {register integer for_end; k = 5267 ; for_end = 5572 ; if ( k <= for_end) 
  354.   do 
  355.     eqtb [ k ] .cint = 0 ; 
  356.   while ( k++ < for_end ) ; } 
  357.   eqtb [ 5284 ] .cint = 1000 ; 
  358.   eqtb [ 5268 ] .cint = 10000 ; 
  359.   eqtb [ 5308 ] .cint = 1 ; 
  360.   eqtb [ 5307 ] .cint = 25 ; 
  361.   eqtb [ 5312 ] .cint = 92 ; 
  362.   eqtb [ 5315 ] .cint = 13 ; 
  363.   {register integer for_end; k = 0 ; for_end = 127 ; if ( k <= for_end) do 
  364.     eqtb [ 5573 + k ] .cint = -1 ; 
  365.   while ( k++ < for_end ) ; } 
  366.   eqtb [ 5619 ] .cint = 0 ; 
  367.   {register integer for_end; k = 5701 ; for_end = 5976 ; if ( k <= for_end) 
  368.   do 
  369.     eqtb [ k ] .cint = 0 ; 
  370.   while ( k++ < for_end ) ; } 
  371.   hashused = 3258 ; 
  372.   cscount = 0 ; 
  373.   eqtb [ 3267 ] .hh.b0 = 115 ; 
  374.   hash [ 3267 ] .v.RH = 361 ; 
  375.   fontptr = 0 ; 
  376.   fmemptr = 7 ; 
  377.   fontname [ 0 ] = 654 ; 
  378.   fontarea [ 0 ] = 206 ; 
  379.   hyphenchar [ 0 ] = 45 ; 
  380.   skewchar [ 0 ] = -1 ; 
  381.   fontbc [ 0 ] = 1 ; 
  382.   fontec [ 0 ] = 0 ; 
  383.   fontsize [ 0 ] = 0 ; 
  384.   fontdsize [ 0 ] = 0 ; 
  385.   charbase [ 0 ] = 0 ; 
  386.   widthbase [ 0 ] = 0 ; 
  387.   heightbase [ 0 ] = 0 ; 
  388.   depthbase [ 0 ] = 0 ; 
  389.   italicbase [ 0 ] = 0 ; 
  390.   ligkernbase [ 0 ] = 0 ; 
  391.   kernbase [ 0 ] = 0 ; 
  392.   extenbase [ 0 ] = 0 ; 
  393.   fontglue [ 0 ] = 0 ; 
  394.   fontparams [ 0 ] = 7 ; 
  395.   parambase [ 0 ] = -1 ; 
  396.   {register integer for_end; k = 0 ; for_end = 6 ; if ( k <= for_end) do 
  397.     fontinfo [ k ] .cint = 0 ; 
  398.   while ( k++ < for_end ) ; } 
  399.   trieopptr = 0 ; 
  400.   trie [ 0 ] .v.RH = 0 ; 
  401.   trie [ 0 ] .b1 = 0 ; 
  402.   trie [ 0 ] .b0 = 0 ; 
  403.   {register integer for_end; k = 1 ; for_end = 127 ; if ( k <= for_end) do 
  404.     trie [ k ] = trie [ 0 ] ; 
  405.   while ( k++ < for_end ) ; } 
  406.   triemax = 127 ; 
  407.   hash [ 3258 ] .v.RH = 1038 ; 
  408.   formatident = 1103 ; 
  409.   hash [ 3266 ] .v.RH = 1138 ; 
  410.   eqtb [ 3266 ] .hh.b1 = 1 ; 
  411.   eqtb [ 3266 ] .hh.b0 = 112 ; 
  412.   eqtb [ 3266 ] .hh .v.RH = 0 ; 
  413. #endif /* INITEX */
  414. #ifdef INITEX
  415. boolean getstringsstarted () {
  416.     /* 30 10 */ register boolean Result; 
  417.   getstringsstarted_regmem 
  418.   schar k, l  ; 
  419.   char m, n  ; 
  420.   strnumber g  ; 
  421.   integer a  ; 
  422.   boolean c  ; 
  423.   poolptr = 0 ; 
  424.   strptr = 0 ; 
  425.   strstart [ 0 ] = 0 ; 
  426.   {register integer for_end; k = 0 ; for_end = 127 ; if ( k <= for_end) do 
  427.     {
  428.       if ( ( ( k < 32 ) || ( k > 126 ) ) ) 
  429.       {
  430.     {
  431.       strpool [ poolptr ] = 94 ; 
  432.       incr ( poolptr ) ; 
  433.     } 
  434.     {
  435.       strpool [ poolptr ] = 94 ; 
  436.       incr ( poolptr ) ; 
  437.     } 
  438.     if ( k < 64 ) 
  439.     {
  440.       strpool [ poolptr ] = k + 64 ; 
  441.       incr ( poolptr ) ; 
  442.     } 
  443.     else {
  444.         
  445.       strpool [ poolptr ] = k - 64 ; 
  446.       incr ( poolptr ) ; 
  447.     } 
  448.       } 
  449.       else {
  450.       
  451.     strpool [ poolptr ] = k ; 
  452.     incr ( poolptr ) ; 
  453.       } 
  454.       g = makestring () ; 
  455.     } 
  456.   while ( k++ < for_end ) ; } 
  457.   vstrcpy ( nameoffile + 1 , poolname ) ; 
  458.   if ( aopenin ( poolfile , poolpathspec ) ) 
  459.   {
  460.     c = false ; 
  461.     do {
  462.     { 
  463.     if ( eof ( poolfile ) ) 
  464.     {
  465.       wakeupterminal () ; 
  466. #ifdef RISC_OS
  467.       (void) os_fputs("! tex.pool has no check sum.", stderr ) ; 
  468. #else
  469.       (void) fprintf( stdout , "%s\n",  "! tex.pool has no check sum." ) ; 
  470. #endif
  471.       aclose ( poolfile ) ; 
  472.       Result = false ; 
  473.       return(Result) ; 
  474.     } 
  475.     read ( poolfile , m ) ; 
  476.     read ( poolfile , n ) ; 
  477.     if ( m == '*' ) 
  478.     {
  479.       a = 0 ; 
  480.       k = 1 ; 
  481.       while ( true ) {
  482.           
  483.         if ( ( xord [ n ] < 48 ) || ( xord [ n ] > 57 ) ) 
  484.         {
  485.           wakeupterminal () ; 
  486. #ifdef RISC_OS
  487.           (void) os_fputs("! tex.pool check sum doesn't have nine digits.",
  488.                        stderr) ; 
  489. #else
  490.           (void) fprintf( stdout , "%s\n",                "! tex.pool check sum doesn't have nine digits." ) ; 
  491. #endif
  492.           aclose ( poolfile ) ; 
  493.           Result = false ; 
  494.           return(Result) ; 
  495.         } 
  496.         a = 10 * a + xord [ n ] - 48 ; 
  497.         if ( k == 9 ) 
  498.         goto lab30 ; 
  499.         incr ( k ) ; 
  500.         read ( poolfile , n ) ; 
  501.       } 
  502.       lab30: if ( a != 67218746L ) 
  503.       {
  504.         wakeupterminal () ; 
  505. #ifdef RISC_OS
  506.         (void) os_fputs("! tex.pool doesn't match; tangle me again.", stderr) 
  507. #else
  508.         (void) fprintf( stdout , "%s\n",  "! tex.pool doesn't match; tangle me again." )
  509. #endif 
  510.         ; 
  511.         aclose ( poolfile ) ; 
  512.         Result = false ; 
  513.         return(Result) ; 
  514.       } 
  515.       c = true ; 
  516.     } 
  517.     else {
  518.         
  519.       if ( ( xord [ m ] < 48 ) || ( xord [ m ] > 57 ) || ( xord [ n ] < 48 
  520.       ) || ( xord [ n ] > 57 ) ) 
  521.       {
  522.         wakeupterminal () ; 
  523. #ifdef RISC_OS
  524.         (void) os_fputs("! tex.pool line doesn't begin with two digits.",stderr); 
  525. #else
  526.         (void) fprintf( stdout , "%s\n",              "! tex.pool line doesn't begin with two digits." ) ; 
  527. #endif
  528.         aclose ( poolfile ) ; 
  529.         Result = false ; 
  530.         return(Result) ; 
  531.       } 
  532.       l = xord [ m ] * 10 + xord [ n ] - 48 * 11 ; 
  533.       if ( poolptr + l + stringvacancies > poolsize ) 
  534.       {
  535.         wakeupterminal () ; 
  536. #ifdef RISC_OS
  537.         (void) os_fputs("! You have to increase POOLSIZE.", stderr); 
  538. #else
  539.         (void) fprintf( stdout , "%s\n",  "! You have to increase POOLSIZE." ) ; 
  540. #endif
  541.         aclose ( poolfile ) ; 
  542.         Result = false ; 
  543.         return(Result) ; 
  544.       } 
  545.       {register integer for_end; k = 1 ; for_end = l ; if ( k <= for_end) 
  546.       do 
  547.         {
  548. #ifdef RISC_OS /* PENDING: LEAVE THESE FOR THE MOMENT */
  549. #endif
  550.           if ( eoln ( poolfile ) ) 
  551.           m = ' ' ; 
  552.           else read ( poolfile , m ) ; 
  553.           {
  554.         strpool [ poolptr ] = xord [ m ] ; 
  555.         incr ( poolptr ) ; 
  556.           } 
  557.         } 
  558.       while ( k++ < for_end ) ; } 
  559.       readln ( poolfile ) ; 
  560.       g = makestring () ; 
  561.     } 
  562.       } 
  563.     } while ( ! ( c ) ) ; 
  564.     aclose ( poolfile ) ; 
  565.     Result = true ; 
  566.   } 
  567.   else {
  568.       
  569.     wakeupterminal () ; 
  570. #ifdef RISC_OS
  571.     (void) os_fputs("! I can't read tex.pool.", stderr); 
  572. #else
  573.     (void) fprintf( stdout , "%s\n",  "! I can't read tex.pool." ) ; 
  574. #endif
  575.     Result = false ; 
  576.     return(Result) ; 
  577.   } 
  578.   return(Result) ; 
  579. #endif /* INITEX */
  580. #ifdef INITEX
  581. sortavail () {
  582.     sortavail_regmem 
  583.   halfword p, q, r  ; 
  584.   halfword oldrover  ; 
  585.   p = getnode ( 1073741824L ) ; 
  586.   p = mem [ rover + 1 ] .hh .v.RH ; 
  587.   mem [ rover + 1 ] .hh .v.RH = 65535L ; 
  588.   oldrover = rover ; 
  589.   while ( p != oldrover ) if ( p < rover ) 
  590.   {
  591.     q = p ; 
  592.     p = mem [ q + 1 ] .hh .v.RH ; 
  593.     mem [ q + 1 ] .hh .v.RH = rover ; 
  594.     rover = q ; 
  595.   } 
  596.   else {
  597.       
  598.     q = rover ; 
  599.     while ( mem [ q + 1 ] .hh .v.RH < p ) q = mem [ q + 1 ] .hh .v.RH ; 
  600.     r = mem [ p + 1 ] .hh .v.RH ; 
  601.     mem [ p + 1 ] .hh .v.RH = mem [ q + 1 ] .hh .v.RH ; 
  602.     mem [ q + 1 ] .hh .v.RH = p ; 
  603.     p = r ; 
  604.   } 
  605.   p = rover ; 
  606.   while ( mem [ p + 1 ] .hh .v.RH != 65535L ) {
  607.       
  608.     mem [ mem [ p + 1 ] .hh .v.RH + 1 ] .hh .v.LH = p ; 
  609.     p = mem [ p + 1 ] .hh .v.RH ; 
  610.   } 
  611.   mem [ p + 1 ] .hh .v.RH = rover ; 
  612.   mem [ rover + 1 ] .hh .v.LH = p ; 
  613. #endif /* INITEX */
  614. #ifdef INITEX
  615. zprimitive ( s , c , o ) 
  616. strnumber s ; 
  617. quarterword c ; 
  618. halfword o ; 
  619. {primitive_regmem 
  620.   poolpointer k  ; 
  621.   smallnumber j  ; 
  622.   smallnumber l  ; 
  623.   if ( s < 128 ) 
  624.   curval = s + 129 ; 
  625.   else {
  626.       
  627.     k = strstart [ s ] ; 
  628.     l = strstart [ s + 1 ] - k ; 
  629.     {register integer for_end; j = 0 ; for_end = l - 1 ; if ( j <= for_end) 
  630.     do 
  631.       buffer [ j ] = strpool [ k + j ] ; 
  632.     while ( j++ < for_end ) ; } 
  633.     curval = idlookup ( 0 , l ) ; 
  634.     {
  635.       decr ( strptr ) ; 
  636.       poolptr = strstart [ strptr ] ; 
  637.     } 
  638.     hash [ curval ] .v.RH = s ; 
  639.   } 
  640.   eqtb [ curval ] .hh.b1 = 1 ; 
  641.   eqtb [ curval ] .hh.b0 = c ; 
  642.   eqtb [ curval ] .hh .v.RH = o ; 
  643. #endif /* INITEX */
  644. #ifdef INITEX
  645. quarterword znewtrieop ( d , n , v ) 
  646. smallnumber d , n ; 
  647. quarterword v ; 
  648. {/* 10 */ register quarterword Result; newtrieop_regmem 
  649.   short h  ; 
  650.   quarterword u  ; 
  651.   h = abs ( toint ( n ) + 313 * toint ( d ) + 361 * toint ( v ) ) % 510 ; 
  652.   while ( true ) {
  653.       
  654.     u = trieophash [ h ] ; 
  655.     if ( u == 0 ) 
  656.     {
  657.       if ( trieopptr == 255 ) 
  658.       {
  659.     Result = 0 ; 
  660.     return(Result) ; 
  661.       } 
  662.       incr ( trieopptr ) ; 
  663.       hyfdistance [ trieopptr ] = d ; 
  664.       hyfnum [ trieopptr ] = n ; 
  665.       hyfnext [ trieopptr ] = v ; 
  666.       trieophash [ h ] = trieopptr ; 
  667.       Result = trieopptr ; 
  668.       return(Result) ; 
  669.     } 
  670.     if ( ( hyfdistance [ u ] == d ) && ( hyfnum [ u ] == n ) && ( hyfnext [ u 
  671.     ] == v ) ) 
  672.     {
  673.       Result = u ; 
  674.       return(Result) ; 
  675.     } 
  676.     if ( h > 0 ) 
  677.     decr ( h ) ; 
  678.     else h = 510 ; 
  679.   } 
  680.   return(Result) ; 
  681. triepointer ztrienode ( p ) 
  682. triepointer p ; 
  683. {/* 10 */ register triepointer Result; trienode_regmem 
  684.   triepointer h  ; 
  685.   triepointer q  ; 
  686.   h = abs ( toint ( triec [ p ] ) + 1009 * toint ( trieo [ p ] ) + 2718 * 
  687.   toint ( triel [ p ] ) + 3142 * toint ( trier [ p ] ) ) % triesize ; 
  688.   while ( true ) {
  689.       
  690.     q = triehash [ h ] ; 
  691.     if ( q == 0 ) 
  692.     {
  693.       triehash [ h ] = p ; 
  694.       Result = p ; 
  695.       return(Result) ; 
  696.     } 
  697.     if ( ( triec [ q ] == triec [ p ] ) && ( trieo [ q ] == trieo [ p ] ) && ( 
  698.     triel [ q ] == triel [ p ] ) && ( trier [ q ] == trier [ p ] ) ) 
  699.     {
  700.       Result = q ; 
  701.       return(Result) ; 
  702.     } 
  703.     if ( h > 0 ) 
  704.     decr ( h ) ; 
  705.     else h = triesize ; 
  706.   } 
  707.   return(Result) ; 
  708. triepointer zcompresstrie ( p ) 
  709. triepointer p ; 
  710. {register triepointer Result; compresstrie_regmem 
  711.   if ( p == 0 ) 
  712.   Result = 0 ; 
  713.   else {
  714.       
  715.     triel [ p ] = compresstrie ( triel [ p ] ) ; 
  716.     trier [ p ] = compresstrie ( trier [ p ] ) ; 
  717.     Result = trienode ( p ) ; 
  718.   } 
  719.   return(Result) ; 
  720. initpatternmemory () {
  721.     initpatternmemory_regmem 
  722.   short h  ; 
  723.   triepointer p  ; 
  724.   {register integer for_end; h = 0 ; for_end = 510 ; if ( h <= for_end) do 
  725.     trieophash [ h ] = 0 ; 
  726.   while ( h++ < for_end ) ; } 
  727.   trieopptr = 0 ; 
  728.   triel [ 0 ] = 0 ; 
  729.   triec [ 0 ] = 0 ; 
  730.   trieptr = 0 ; 
  731.   {register integer for_end; p = 0 ; for_end = triesize ; if ( p <= for_end) 
  732.   do 
  733.     triehash [ p ] = 0 ; 
  734.   while ( p++ < for_end ) ; } 
  735. inittriememory () {
  736.     inittriememory_regmem 
  737.   triepointer p  ; 
  738.   {register integer for_end; p = 0 ; for_end = trieptr ; if ( p <= for_end) 
  739.   do 
  740.     triehash [ p ] = 0 ; 
  741.   while ( p++ < for_end ) ; } 
  742.   triemax = 128 ; 
  743.   triemin = 128 ; 
  744.   trie [ 0 ] .v.RH = 1 ; 
  745.   trietaken [ 0 ] = false ; 
  746.   {register integer for_end; p = 1 ; for_end = 128 ; if ( p <= for_end) do 
  747.     {
  748.       trie [ p ] .v.LH = p - 1 ; 
  749.       trie [ p ] .v.RH = p + 1 ; 
  750.       trietaken [ p ] = false ; 
  751.     } 
  752.   while ( p++ < for_end ) ; } 
  753. zfirstfit ( p ) 
  754. triepointer p ; 
  755. {/* 45 40 */ firstfit_regmem 
  756.   triepointer h  ; 
  757.   triepointer z  ; 
  758.   triepointer q  ; 
  759.   ASCIIcode c  ; 
  760.   c = triec [ p ] ; 
  761.   if ( c < triemin ) 
  762.   triemin = c ; 
  763.   z = trie [ triemin - 1 ] .v.RH ; 
  764.   while ( true ) {
  765.       
  766.     if ( z < c ) 
  767.     goto lab45 ; 
  768.     h = z - c ; 
  769.     if ( triemax < h + 128 ) 
  770.     {
  771.       if ( triesize <= h + 128 ) 
  772.       overflow ( 801 , triesize ) ; 
  773.       do {
  774.       incr ( triemax ) ; 
  775.     trietaken [ triemax ] = false ; 
  776.     trie [ triemax ] .v.RH = triemax + 1 ; 
  777.     trie [ triemax ] .v.LH = triemax - 1 ; 
  778.       } while ( ! ( triemax == h + 128 ) ) ; 
  779.     } 
  780.     if ( trietaken [ h ] ) 
  781.     goto lab45 ; 
  782.     q = trier [ p ] ; 
  783.     while ( q > 0 ) {
  784.     
  785.       if ( trie [ h + triec [ q ] ] .v.RH == 0 ) 
  786.       goto lab45 ; 
  787.       q = trier [ q ] ; 
  788.     } 
  789.     goto lab40 ; 
  790.     lab45: z = trie [ z ] .v.RH ; 
  791.   } 
  792.   lab40: trietaken [ h ] = true ; 
  793.   triehash [ p ] = h ; 
  794.   q = p ; 
  795.   do {
  796.       z = h + triec [ q ] ; 
  797.     trie [ trie [ z ] .v.RH ] .v.LH = trie [ z ] .v.LH ; 
  798.     trie [ trie [ z ] .v.LH ] .v.RH = trie [ z ] .v.RH ; 
  799.     trie [ z ] .v.RH = 0 ; 
  800.     q = trier [ q ] ; 
  801.   } while ( ! ( q == 0 ) ) ; 
  802. ztriepack ( p ) 
  803. triepointer p ; 
  804. {triepack_regmem 
  805.   triepointer q  ; 
  806.   do {
  807.       q = triel [ p ] ; 
  808.     if ( ( q > 0 ) && ( triehash [ q ] == 0 ) ) 
  809.     {
  810.       firstfit ( q ) ; 
  811.       triepack ( q ) ; 
  812.     } 
  813.     p = trier [ p ] ; 
  814.   } while ( ! ( p == 0 ) ) ; 
  815. ztriefix ( p ) 
  816. triepointer p ; 
  817. {triefix_regmem 
  818.   triepointer q  ; 
  819.   ASCIIcode c  ; 
  820.   triepointer z  ; 
  821.   z = triehash [ p ] ; 
  822.   while ( p != 0 ) {
  823.       
  824.     q = triel [ p ] ; 
  825.     c = triec [ p ] ; 
  826.     trie [ z + c ] .v.RH = triehash [ q ] ; 
  827.     trie [ z + c ] .b1 = c ; 
  828.     trie [ z + c ] .b0 = trieo [ p ] ; 
  829.     if ( q > 0 ) 
  830.     triefix ( q ) ; 
  831.     p = trier [ p ] ; 
  832.   } 
  833. newpatterns () {
  834.     /* 30 31 */ newpatterns_regmem 
  835.   smallnumber k, l  ; 
  836.   boolean digitsensed  ; 
  837.   quarterword v  ; 
  838.   triepointer p, q  ; 
  839.   boolean firstchild  ; 
  840.   ASCIIcode c  ; 
  841.   triepointer r, s  ; 
  842.   twohalves h  ; 
  843.   scanleftbrace () ; 
  844.   initpatternmemory () ; 
  845.   k = 0 ; 
  846.   hyf [ 0 ] = 0 ; 
  847.   digitsensed = false ; 
  848.   while ( true ) {
  849.       
  850.     getxtoken () ; 
  851.     switch ( curcmd ) 
  852.     {case 11 : 
  853.     case 12 : 
  854.       if ( digitsensed || ( curchr < 48 ) || ( curchr > 57 ) ) 
  855.       {
  856.     if ( curchr == 46 ) 
  857.     curchr = 128 ; 
  858.     else {
  859.         
  860.       curchr = eqtb [ 4755 + curchr ] .hh .v.RH ; 
  861.       if ( curchr == 0 ) 
  862.       {
  863.         {
  864.           if ( interaction == 3 ) 
  865.           wakeupterminal () ; 
  866.           printnl ( 133 ) ; 
  867.           print ( 805 ) ; 
  868.         } 
  869.         {
  870.           helpptr = 1 ; 
  871.           helpline [ 0 ] = 804 ; 
  872.         } 
  873.         error () ; 
  874.         curchr = 128 ; 
  875.       } 
  876.     } 
  877.     if ( k < 63 ) 
  878.     {
  879.       incr ( k ) ; 
  880.       hc [ k ] = curchr - 1 ; 
  881.       hyf [ k ] = 0 ; 
  882.       digitsensed = false ; 
  883.     } 
  884.       } 
  885.       else {
  886.       
  887.     hyf [ k ] = curchr - 48 ; 
  888.     if ( k < 63 ) 
  889.     digitsensed = true ; 
  890.       } 
  891.       break ; 
  892.     case 10 : 
  893.     case 2 : 
  894.       {
  895.     if ( k > 0 ) 
  896.     {
  897.       if ( hc [ 1 ] == 127 ) 
  898.       hyf [ 0 ] = 0 ; 
  899.       if ( hc [ k ] == 127 ) 
  900.       hyf [ k ] = 0 ; 
  901.       l = k ; 
  902.       v = 0 ; 
  903.       while ( true ) {
  904.           
  905.         if ( hyf [ l ] != 0 ) 
  906.         v = newtrieop ( k - l , hyf [ l ] , v ) ; 
  907.         if ( l > 0 ) 
  908.         decr ( l ) ; 
  909.         else goto lab31 ; 
  910.       } 
  911.       lab31: ; 
  912.       q = 0 ; 
  913.       while ( l < k ) {
  914.           
  915.         incr ( l ) ; 
  916.         c = hc [ l ] ; 
  917.         p = triel [ q ] ; 
  918.         firstchild = true ; 
  919.         while ( ( p > 0 ) && ( c > triec [ p ] ) ) {
  920.         
  921.           q = p ; 
  922.           p = trier [ q ] ; 
  923.           firstchild = false ; 
  924.         } 
  925.         if ( ( p == 0 ) || ( c < triec [ p ] ) ) 
  926.         {
  927.           if ( trieptr == triesize ) 
  928.           overflow ( 801 , triesize ) ; 
  929.           incr ( trieptr ) ; 
  930.           trier [ trieptr ] = p ; 
  931.           p = trieptr ; 
  932.           triel [ p ] = 0 ; 
  933.           if ( firstchild ) 
  934.           triel [ q ] = p ; 
  935.           else trier [ q ] = p ; 
  936.           triec [ p ] = c ; 
  937.           trieo [ p ] = 0 ; 
  938.         } 
  939.         q = p ; 
  940.       } 
  941.       if ( trieo [ q ] != 0 ) 
  942.       {
  943.         {
  944.           if ( interaction == 3 ) 
  945.           wakeupterminal () ; 
  946.           printnl ( 133 ) ; 
  947.           print ( 806 ) ; 
  948.         } 
  949.         {
  950.           helpptr = 1 ; 
  951.           helpline [ 0 ] = 804 ; 
  952.         } 
  953.         error () ; 
  954.       } 
  955.       trieo [ q ] = v ; 
  956.     } 
  957.     if ( curcmd == 2 ) 
  958.     goto lab30 ; 
  959.     k = 0 ; 
  960.     hyf [ 0 ] = 0 ; 
  961.     digitsensed = false ; 
  962.       } 
  963.       break ; 
  964.       default: 
  965.       {
  966.     {
  967.       if ( interaction == 3 ) 
  968.       wakeupterminal () ; 
  969.       printnl ( 133 ) ; 
  970.       print ( 802 ) ; 
  971.     } 
  972.     printesc ( 803 ) ; 
  973.     {
  974.       helpptr = 1 ; 
  975.       helpline [ 0 ] = 804 ; 
  976.     } 
  977.     error () ; 
  978.       } 
  979.       break ; 
  980.     } 
  981.   } 
  982.   lab30: ; 
  983.   triel [ 0 ] = compresstrie ( triel [ 0 ] ) ; 
  984.   inittriememory () ; 
  985.   if ( triel [ 0 ] != 0 ) 
  986.   {
  987.     firstfit ( triel [ 0 ] ) ; 
  988.     triepack ( triel [ 0 ] ) ; 
  989.   } 
  990.   r = 0 ; 
  991.   while ( trietaken [ r ] ) incr ( r ) ; 
  992.   triehash [ 0 ] = r ; 
  993.   triefix ( triel [ 0 ] ) ; 
  994.   r = 0 ; 
  995.   h .v.RH = 0 ; 
  996.   h .b0 = 0 ; 
  997.   h .b1 = 0 ; 
  998.   do {
  999.       s = trie [ r ] .v.RH ; 
  1000.     trie [ r ] = h ; 
  1001.     r = s ; 
  1002.   } while ( ! ( r > triemax ) ) ; 
  1003. #endif /* INITEX */
  1004. prefixedcommand () {
  1005.     /* 30 10 */ prefixedcommand_regmem 
  1006.   smallnumber a  ; 
  1007.   internalfontnumber f  ; 
  1008.   halfword j  ; 
  1009.   integer k  ; 
  1010.   halfword p, q  ; 
  1011.   integer n  ; 
  1012.   boolean e  ; 
  1013.   a = 0 ; 
  1014.   while ( curcmd == 92 ) {
  1015.       
  1016.     if ( ! odd ( a / curchr ) ) 
  1017.     a = a + curchr ; 
  1018.     do {
  1019.     getxtoken () ; 
  1020.     } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1021.     if ( curcmd <= 69 ) 
  1022.     {
  1023.       {
  1024.     if ( interaction == 3 ) 
  1025.     wakeupterminal () ; 
  1026.     printnl ( 133 ) ; 
  1027.     print ( 1027 ) ; 
  1028.       } 
  1029.       printcmdchr ( curcmd , curchr ) ; 
  1030.       printchar ( 39 ) ; 
  1031.       {
  1032.     helpptr = 1 ; 
  1033.     helpline [ 0 ] = 1028 ; 
  1034.       } 
  1035.       backerror () ; 
  1036.       return ; 
  1037.     } 
  1038.   } 
  1039.   if ( ( curcmd != 96 ) && ( a % 4 != 0 ) ) 
  1040.   {
  1041.     {
  1042.       if ( interaction == 3 ) 
  1043.       wakeupterminal () ; 
  1044.       printnl ( 133 ) ; 
  1045.       print ( 541 ) ; 
  1046.     } 
  1047.     printesc ( 1019 ) ; 
  1048.     print ( 1029 ) ; 
  1049.     printesc ( 1020 ) ; 
  1050.     print ( 1030 ) ; 
  1051.     printcmdchr ( curcmd , curchr ) ; 
  1052.     printchar ( 39 ) ; 
  1053.     {
  1054.       helpptr = 1 ; 
  1055.       helpline [ 0 ] = 1031 ; 
  1056.     } 
  1057.     error () ; 
  1058.   } 
  1059.   if ( eqtb [ 5310 ] .cint != 0 ) 
  1060.   if ( eqtb [ 5310 ] .cint < 0 ) 
  1061.   {
  1062.     if ( ( a >= 4 ) ) 
  1063.     a = a - 4 ; 
  1064.   } 
  1065.   else {
  1066.       
  1067.     if ( ! ( a >= 4 ) ) 
  1068.     a = a + 4 ; 
  1069.   } 
  1070.   switch ( curcmd ) 
  1071.   {case 86 : 
  1072.     if ( ( a >= 4 ) ) 
  1073.     geqdefine ( 4578 , 119 , curchr ) ; 
  1074.     else eqdefine ( 4578 , 119 , curchr ) ; 
  1075.     break ; 
  1076.   case 96 : 
  1077.     {
  1078.       if ( odd ( curchr ) && ! ( a >= 4 ) && ( eqtb [ 5310 ] .cint >= 0 ) ) 
  1079.       a = a + 4 ; 
  1080.       e = ( curchr >= 2 ) ; 
  1081.       getrtoken () ; 
  1082.       p = curcs ; 
  1083.       q = scantoks ( true , e ) ; 
  1084.       if ( ( a >= 4 ) ) 
  1085.       geqdefine ( p , 110 + ( a % 4 ) , defref ) ; 
  1086.       else eqdefine ( p , 110 + ( a % 4 ) , defref ) ; 
  1087.     } 
  1088.     break ; 
  1089.   case 93 : 
  1090.     {
  1091.       n = curchr ; 
  1092.       getrtoken () ; 
  1093.       p = curcs ; 
  1094.       if ( n == 0 ) 
  1095.       {
  1096.     do {
  1097.         gettoken () ; 
  1098.     } while ( ! ( curcmd != 10 ) ) ; 
  1099.     if ( curtok == 3133 ) 
  1100.     {
  1101.       gettoken () ; 
  1102.       if ( curcmd == 10 ) 
  1103.       gettoken () ; 
  1104.     } 
  1105.       } 
  1106.       else {
  1107.       
  1108.     gettoken () ; 
  1109.     q = curtok ; 
  1110.     gettoken () ; 
  1111.     backinput () ; 
  1112.     curtok = q ; 
  1113.     backinput () ; 
  1114.       } 
  1115.       if ( curcmd >= 110 ) 
  1116.       incr ( mem [ curchr ] .hh .v.LH ) ; 
  1117.       if ( ( a >= 4 ) ) 
  1118.       geqdefine ( p , curcmd , curchr ) ; 
  1119.       else eqdefine ( p , curcmd , curchr ) ; 
  1120.     } 
  1121.     break ; 
  1122.   case 94 : 
  1123.     {
  1124.       n = curchr ; 
  1125.       getrtoken () ; 
  1126.       p = curcs ; 
  1127.       if ( ( a >= 4 ) ) 
  1128.       geqdefine ( p , 0 , 256 ) ; 
  1129.       else eqdefine ( p , 0 , 256 ) ; 
  1130.       scanoptionalequals () ; 
  1131.       switch ( n ) 
  1132.       {case 0 : 
  1133.     {
  1134.       scancharnum () ; 
  1135.       if ( ( a >= 4 ) ) 
  1136.       geqdefine ( p , 67 , curval ) ; 
  1137.       else eqdefine ( p , 67 , curval ) ; 
  1138.     } 
  1139.     break ; 
  1140.       case 1 : 
  1141.     {
  1142.       scanfifteenbitint () ; 
  1143.       if ( ( a >= 4 ) ) 
  1144.       geqdefine ( p , 68 , curval ) ; 
  1145.       else eqdefine ( p , 68 , curval ) ; 
  1146.     } 
  1147.     break ; 
  1148.     default: 
  1149.     {
  1150.       scaneightbitint () ; 
  1151.       switch ( n ) 
  1152.       {case 2 : 
  1153.         if ( ( a >= 4 ) ) 
  1154.         geqdefine ( p , 72 , 5317 + curval ) ; 
  1155.         else eqdefine ( p , 72 , 5317 + curval ) ; 
  1156.         break ; 
  1157.       case 3 : 
  1158.         if ( ( a >= 4 ) ) 
  1159.         geqdefine ( p , 73 , 5721 + curval ) ; 
  1160.         else eqdefine ( p , 73 , 5721 + curval ) ; 
  1161.         break ; 
  1162.       case 4 : 
  1163.         if ( ( a >= 4 ) ) 
  1164.         geqdefine ( p , 74 , 3544 + curval ) ; 
  1165.         else eqdefine ( p , 74 , 3544 + curval ) ; 
  1166.         break ; 
  1167.       case 5 : 
  1168.         if ( ( a >= 4 ) ) 
  1169.         geqdefine ( p , 75 , 3800 + curval ) ; 
  1170.         else eqdefine ( p , 75 , 3800 + curval ) ; 
  1171.         break ; 
  1172.       case 6 : 
  1173.         if ( ( a >= 4 ) ) 
  1174.         geqdefine ( p , 71 , 4066 + curval ) ; 
  1175.         else eqdefine ( p , 71 , 4066 + curval ) ; 
  1176.         break ; 
  1177.       } 
  1178.     } 
  1179.     break ; 
  1180.       } 
  1181.     } 
  1182.     break ; 
  1183.   case 95 : 
  1184.     {
  1185.       scanint () ; 
  1186.       n = curval ; 
  1187.       if ( ! scankeyword ( 695 ) ) 
  1188.       {
  1189.     {
  1190.       if ( interaction == 3 ) 
  1191.       wakeupterminal () ; 
  1192.       printnl ( 133 ) ; 
  1193.       print ( 921 ) ; 
  1194.     } 
  1195.     {
  1196.       helpptr = 2 ; 
  1197.       helpline [ 1 ] = 1048 ; 
  1198.       helpline [ 0 ] = 1049 ; 
  1199.     } 
  1200.     error () ; 
  1201.       } 
  1202.       getrtoken () ; 
  1203.       p = curcs ; 
  1204.       readtoks ( n , p ) ; 
  1205.       if ( ( a >= 4 ) ) 
  1206.       geqdefine ( p , 110 , curval ) ; 
  1207.       else eqdefine ( p , 110 , curval ) ; 
  1208.     } 
  1209.     break ; 
  1210.   case 70 : 
  1211.   case 71 : 
  1212.     {
  1213.       q = curcs ; 
  1214.       if ( curcmd == 70 ) 
  1215.       {
  1216.     scaneightbitint () ; 
  1217.     p = 4066 + curval ; 
  1218.       } 
  1219.       else p = curchr ; 
  1220.       scanoptionalequals () ; 
  1221.       do {
  1222.       getxtoken () ; 
  1223.       } while ( ! ( ( curcmd != 10 ) && ( curcmd != 0 ) ) ) ; 
  1224.       if ( curcmd != 1 ) 
  1225.       {
  1226.     if ( curcmd == 70 ) 
  1227.     {
  1228.       scaneightbitint () ; 
  1229.       curcmd = 71 ; 
  1230.       curchr = 4066 + curval ; 
  1231.     } 
  1232.     if ( curcmd == 71 ) 
  1233.     {
  1234.       q = eqtb [ curchr ] .hh .v.RH ; 
  1235.       if ( q == 0 ) 
  1236.       if ( ( a >= 4 ) ) 
  1237.       geqdefine ( p , 100 , 0 ) ; 
  1238.       else eqdefine ( p , 100 , 0 ) ; 
  1239.       else {
  1240.           
  1241.         incr ( mem [ q ] .hh .v.LH ) ; 
  1242.         if ( ( a >= 4 ) ) 
  1243.         geqdefine ( p , 110 , q ) ; 
  1244.         else eqdefine ( p , 110 , q ) ; 
  1245.       } 
  1246.       goto lab30 ; 
  1247.     } 
  1248.       } 
  1249.       backinput () ; 
  1250.       curcs = q ; 
  1251.       q = scantoks ( false , false ) ; 
  1252.       if ( mem [ defref ] .hh .v.RH == 0 ) 
  1253.       {
  1254.     if ( ( a >= 4 ) ) 
  1255.     geqdefine ( p , 100 , 0 ) ; 
  1256.     else eqdefine ( p , 100 , 0 ) ; 
  1257.     {
  1258.       mem [ defref ] .hh .v.RH = avail ; 
  1259.       avail = defref ; 
  1260.     ;
  1261. #ifdef STAT
  1262.       decr ( dynused ) ; 
  1263. #endif /* STAT */
  1264.     } 
  1265.       } 
  1266.       else {
  1267.       
  1268.     if ( p == 4057 ) 
  1269.     {
  1270.       mem [ q ] .hh .v.RH = getavail () ; 
  1271.       q = mem [ q ] .hh .v.RH ; 
  1272.       mem [ q ] .hh .v.LH = 637 ; 
  1273.       q = getavail () ; 
  1274.       mem [ q ] .hh .v.LH = 379 ; 
  1275.       mem [ q ] .hh .v.RH = mem [ defref ] .hh .v.RH ; 
  1276.       mem [ defref ] .hh .v.RH = q ; 
  1277.     } 
  1278.     if ( ( a >= 4 ) ) 
  1279.     geqdefine ( p , 110 , defref ) ; 
  1280.     else eqdefine ( p , 110 , defref ) ; 
  1281.       } 
  1282.     } 
  1283.     break ; 
  1284.   case 72 : 
  1285.     {
  1286.       p = curchr ; 
  1287.       scanoptionalequals () ; 
  1288.       scanint () ; 
  1289.       if ( ( a >= 4 ) ) 
  1290.       geqworddefine ( p , curval ) ; 
  1291.       else eqworddefine ( p , curval ) ; 
  1292.     } 
  1293.     break ; 
  1294.   case 73 : 
  1295.     {
  1296.       p = curchr ; 
  1297.       scanoptionalequals () ; 
  1298.       scandimen ( false , false , false ) ; 
  1299.       if ( ( a >= 4 ) ) 
  1300.       geqworddefine ( p , curval ) ; 
  1301.       else eqworddefine ( p , curval ) ; 
  1302.     } 
  1303.     break ; 
  1304.   case 74 : 
  1305.   case 75 : 
  1306.     {
  1307.       p = curchr ; 
  1308.       n = curcmd ; 
  1309.       scanoptionalequals () ; 
  1310.       if ( n == 75 ) 
  1311.       scanglue ( 3 ) ; 
  1312.       else scanglue ( 2 ) ; 
  1313.       trapzeroglue () ; 
  1314.       if ( ( a >= 4 ) ) 
  1315.       geqdefine ( p , 116 , curval ) ; 
  1316.       else eqdefine ( p , 116 , curval ) ; 
  1317.     } 
  1318.     break ; 
  1319.   case 84 : 
  1320.     {
  1321.       if ( curchr == 4627 ) 
  1322.       n = 15 ; 
  1323.       else if ( curchr == 5139 ) 
  1324.       n = 32768L ; 
  1325.       else if ( curchr == 5011 ) 
  1326.       n = 32767 ; 
  1327.       else if ( curchr == 5573 ) 
  1328.       n = 16777215L ; 
  1329.       else n = 127 ; 
  1330.       p = curchr ; 
  1331.       scansevenbitint () ; 
  1332.       p = p + curval ; 
  1333.       scanoptionalequals () ; 
  1334.       scanint () ; 
  1335.       if ( ( ( curval < 0 ) && ( p < 5573 ) ) || ( curval > n ) ) 
  1336.       {
  1337.     {
  1338.       if ( interaction == 3 ) 
  1339.       wakeupterminal () ; 
  1340.       printnl ( 133 ) ; 
  1341.       print ( 1050 ) ; 
  1342.     } 
  1343.     printint ( curval ) ; 
  1344.     if ( p < 5573 ) 
  1345.     print ( 1051 ) ; 
  1346.     else print ( 1052 ) ; 
  1347.     printint ( n ) ; 
  1348.     {
  1349.       helpptr = 1 ; 
  1350.       helpline [ 0 ] = 1053 ; 
  1351.     } 
  1352.     error () ; 
  1353.     curval = 0 ; 
  1354.       } 
  1355.       if ( p < 5139 ) 
  1356.       if ( ( a >= 4 ) ) 
  1357.       geqdefine ( p , 119 , curval ) ; 
  1358.       else eqdefine ( p , 119 , curval ) ; 
  1359.       else if ( p < 5573 ) 
  1360.       if ( ( a >= 4 ) ) 
  1361.       geqdefine ( p , 119 , curval ) ; 
  1362.       else eqdefine ( p , 119 , curval ) ; 
  1363.       else if ( ( a >= 4 ) ) 
  1364.       geqworddefine ( p , curval ) ; 
  1365.       else eqworddefine ( p , curval ) ; 
  1366.     } 
  1367.     break ; 
  1368.   case 85 : 
  1369.     {
  1370.       p = curchr ; 
  1371.       scanfourbitint () ; 
  1372.       p = p + curval ; 
  1373.       scanoptionalequals () ; 
  1374.       scanfontident () ; 
  1375.       if ( ( a >= 4 ) ) 
  1376.       geqdefine ( p , 119 , curval ) ; 
  1377.       else eqdefine ( p , 119 , curval ) ; 
  1378.     } 
  1379.     break ; 
  1380.   case 88 : 
  1381.   case 89 : 
  1382.   case 90 : 
  1383.   case 91 : 
  1384.     doregistercommand ( a ) ; 
  1385.     break ; 
  1386.   case 97 : 
  1387.     {
  1388.       scaneightbitint () ; 
  1389.       if ( ( a >= 4 ) ) 
  1390.       savestack [ saveptr + 0 ] .cint = 1073742080L + curval ; 
  1391.       else savestack [ saveptr + 0 ] .cint = 1073741824L + curval ; 
  1392.       scanoptionalequals () ; 
  1393.       scanbox () ; 
  1394.     } 
  1395.     break ; 
  1396.   case 78 : 
  1397.     alteraux () ; 
  1398.     break ; 
  1399.   case 79 : 
  1400.     alterprevgraf () ; 
  1401.     break ; 
  1402.   case 80 : 
  1403.     alterpagesofar () ; 
  1404.     break ; 
  1405.   case 81 : 
  1406.     alterinteger () ; 
  1407.     break ; 
  1408.   case 82 : 
  1409.     alterboxdimen () ; 
  1410.     break ; 
  1411.   case 83 : 
  1412.     {
  1413.       scanoptionalequals () ; 
  1414.       scanint () ; 
  1415.       n = curval ; 
  1416.       if ( n <= 0 ) 
  1417.       p = 0 ; 
  1418.       else {
  1419.       
  1420.     p = getnode ( 2 * n + 1 ) ; 
  1421.     mem [ p ] .hh .v.LH = n ; 
  1422.     {register integer for_end; j = 1 ; for_end = n ; if ( j <= for_end) 
  1423.     do 
  1424.       {
  1425.         scandimen ( false , false , false ) ; 
  1426.         mem [ p + 2 * j - 1 ] .cint = curval ; 
  1427.         scandimen ( false , false , false ) ; 
  1428.         mem [ p + 2 * j ] .cint = curval ; 
  1429.       } 
  1430.     while ( j++ < for_end ) ; } 
  1431.       } 
  1432.       if ( ( a >= 4 ) ) 
  1433.       geqdefine ( 4056 , 117 , p ) ; 
  1434.       else eqdefine ( 4056 , 117 , p ) ; 
  1435.     } 
  1436.     break ; 
  1437.   case 98 : 
  1438.     if ( curchr == 1 ) 
  1439.     {
  1440.     ;
  1441. #ifdef INITEX
  1442.       newpatterns () ; 
  1443.       goto lab30 ; 
  1444. #endif /* INITEX */
  1445.       {
  1446.     if ( interaction == 3 ) 
  1447.     wakeupterminal () ; 
  1448.     printnl ( 133 ) ; 
  1449.     print ( 1062 ) ; 
  1450.       } 
  1451.       helpptr = 0 ; 
  1452.       error () ; 
  1453.       do {
  1454.       gettoken () ; 
  1455.       } while ( ! ( curcmd == 2 ) ) ; 
  1456.       return ; 
  1457.     } 
  1458.     else {
  1459.     
  1460.       newhyphexceptions () ; 
  1461.       goto lab30 ; 
  1462.     } 
  1463.     break ; 
  1464.   case 76 : 
  1465.     {
  1466.       findfontdimen ( true ) ; 
  1467.       k = curval ; 
  1468.       scanoptionalequals () ; 
  1469.       scandimen ( false , false , false ) ; 
  1470.       fontinfo [ k ] .cint = curval ; 
  1471.     } 
  1472.     break ; 
  1473.   case 77 : 
  1474.     {
  1475.       n = curchr ; 
  1476.       scanfontident () ; 
  1477.       f = curval ; 
  1478.       scanoptionalequals () ; 
  1479.       scanint () ; 
  1480.       if ( n == 0 ) 
  1481.       hyphenchar [ f ] = curval ; 
  1482.       else skewchar [ f ] = curval ; 
  1483.     } 
  1484.     break ; 
  1485.   case 87 : 
  1486.     newfont ( a ) ; 
  1487.     break ; 
  1488.   case 99 : 
  1489.     newinteraction () ; 
  1490.     break ; 
  1491.     default: 
  1492.     confusion ( 1026 ) ; 
  1493.     break ; 
  1494.   } 
  1495.   lab30: if ( aftertoken != 0 ) 
  1496.   {
  1497.     curtok = aftertoken ; 
  1498.     backinput () ; 
  1499.     aftertoken = 0 ; 
  1500.   } 
  1501. #ifdef INITEX
  1502. storefmtfile () {
  1503.     /* 41 42 31 32 */ storefmtfile_regmem 
  1504.   integer j, k, l  ; 
  1505.   halfword p, q  ; 
  1506.   integer x  ; 
  1507.   if ( saveptr != 0 ) 
  1508.   {
  1509.     {
  1510.       if ( interaction == 3 ) 
  1511.       wakeupterminal () ; 
  1512.       printnl ( 133 ) ; 
  1513.       print ( 1104 ) ; 
  1514.     } 
  1515.     {
  1516.       helpptr = 1 ; 
  1517.       helpline [ 0 ] = 1105 ; 
  1518.     } 
  1519.     {
  1520.       if ( interaction == 3 ) 
  1521.       interaction = 2 ; 
  1522.       error () ; 
  1523.     ;
  1524. #ifdef DEBUG
  1525.       if ( interaction > 0 ) 
  1526.       debughelp () ; 
  1527. #endif /* DEBUG */
  1528.       history = 3 ; 
  1529.       jumpout () ; 
  1530.     } 
  1531.   } 
  1532.   selector = 21 ; 
  1533.   print ( 1116 ) ; 
  1534.   print ( jobname ) ; 
  1535.   printchar ( 32 ) ; 
  1536.   printint ( eqtb [ 5290 ] .cint % 100 ) ; 
  1537.   printchar ( 46 ) ; 
  1538.   printint ( eqtb [ 5289 ] .cint ) ; 
  1539.   printchar ( 46 ) ; 
  1540.   printint ( eqtb [ 5288 ] .cint ) ; 
  1541.   printchar ( 41 ) ; 
  1542.   if ( interaction == 0 ) 
  1543.   selector = 18 ; 
  1544.   else selector = 19 ; 
  1545.   {
  1546.     if ( poolptr + 1 > poolsize ) 
  1547.     overflow ( 128 , poolsize - initpoolptr ) ; 
  1548.   } 
  1549.   formatident = makestring () ; 
  1550.   packjobname ( 1117 ) ; 
  1551.   while ( ! wopenout ( fmtfile ) ) promptfilename ( 1118 , 1117 ) ; 
  1552.   printnl ( 1119 ) ; 
  1553.   print ( wmakenamestring ( fmtfile ) ) ; 
  1554.   {
  1555.     decr ( strptr ) ; 
  1556.     poolptr = strstart [ strptr ] ; 
  1557.   } 
  1558.   printnl ( formatident ) ; 
  1559.   putfmtint ( 67218746L ) ; 
  1560.   putfmtint ( 0 ) ; 
  1561.   putfmtint ( memtop ) ; 
  1562.   putfmtint ( 5976 ) ; 
  1563.   putfmtint ( 2551 ) ; 
  1564.   putfmtint ( 307 ) ; 
  1565.   putfmtint ( poolptr ) ; 
  1566.   putfmtint ( strptr ) ; 
  1567.   dumpthings ( strstart [ 0 ] , strptr + 1 ) ; 
  1568.   dumpthings ( strpool [ 0 ] , poolptr ) ; 
  1569.   println () ; 
  1570.   printint ( strptr ) ; 
  1571.   print ( 1106 ) ; 
  1572.   printint ( poolptr ) ; 
  1573.   sortavail () ; 
  1574.   varused = 0 ; 
  1575.   putfmtint ( lomemmax ) ; 
  1576.   putfmtint ( rover ) ; 
  1577.   p = 0 ; 
  1578.   q = rover ; 
  1579.   x = 0 ; 
  1580.   do {
  1581.       dumpthings ( mem [ p ] , q + 2 - p ) ; 
  1582.     x = x + q + 2 - p ; 
  1583.     varused = varused + q - p ; 
  1584.     p = q + mem [ q ] .hh .v.LH ; 
  1585.     q = mem [ q + 1 ] .hh .v.RH ; 
  1586.   } while ( ! ( q == rover ) ) ; 
  1587.   varused = varused + lomemmax - p ; 
  1588.   dynused = memend + 1 - himemmin ; 
  1589.   dumpthings ( mem [ p ] , lomemmax + 1 - p ) ; 
  1590.   x = x + lomemmax + 1 - p ; 
  1591.   putfmtint ( himemmin ) ; 
  1592.   putfmtint ( avail ) ; 
  1593.   dumpthings ( mem [ himemmin ] , memend + 1 - himemmin ) ; 
  1594.   x = x + memend + 1 - himemmin ; 
  1595.   p = avail ; 
  1596.   while ( p != 0 ) {
  1597.       
  1598.     decr ( dynused ) ; 
  1599.     p = mem [ p ] .hh .v.RH ; 
  1600.   } 
  1601.   putfmtint ( varused ) ; 
  1602.   putfmtint ( dynused ) ; 
  1603.   println () ; 
  1604.   printint ( x ) ; 
  1605.   print ( 1107 ) ; 
  1606.   printint ( varused ) ; 
  1607.   printchar ( 38 ) ; 
  1608.   printint ( dynused ) ; 
  1609.   k = 1 ; 
  1610.   do {
  1611.       j = k ; 
  1612.     while ( j < 5266 ) {
  1613.     
  1614.       if ( ( eqtb [ j ] .hh .v.RH == eqtb [ j + 1 ] .hh .v.RH ) && ( eqtb [ j 
  1615.       ] .hh.b0 == eqtb [ j + 1 ] .hh.b0 ) && ( eqtb [ j ] .hh.b1 == eqtb [ j + 
  1616.       1 ] .hh.b1 ) ) 
  1617.       goto lab41 ; 
  1618.       incr ( j ) ; 
  1619.     } 
  1620.     l = 5267 ; 
  1621.     goto lab31 ; 
  1622.     lab41: incr ( j ) ; 
  1623.     l = j ; 
  1624.     while ( j < 5266 ) {
  1625.     
  1626.       if ( ( eqtb [ j ] .hh .v.RH != eqtb [ j + 1 ] .hh .v.RH ) || ( eqtb [ j 
  1627.       ] .hh.b0 != eqtb [ j + 1 ] .hh.b0 ) || ( eqtb [ j ] .hh.b1 != eqtb [ j + 
  1628.       1 ] .hh.b1 ) ) 
  1629.       goto lab31 ; 
  1630.       incr ( j ) ; 
  1631.     } 
  1632.     lab31: putfmtint ( l - k ) ; 
  1633.     dumpthings ( eqtb [ k ] , l - k ) ; 
  1634.     k = j + 1 ; 
  1635.     putfmtint ( k - l ) ; 
  1636.   } while ( ! ( k == 5267 ) ) ; 
  1637.   do {
  1638.       j = k ; 
  1639.     while ( j < 5976 ) {
  1640.     
  1641.       if ( eqtb [ j ] .cint == eqtb [ j + 1 ] .cint ) 
  1642.       goto lab42 ; 
  1643.       incr ( j ) ; 
  1644.     } 
  1645.     l = 5977 ; 
  1646.     goto lab32 ; 
  1647.     lab42: incr ( j ) ; 
  1648.     l = j ; 
  1649.     while ( j < 5976 ) {
  1650.     
  1651.       if ( eqtb [ j ] .cint != eqtb [ j + 1 ] .cint ) 
  1652.       goto lab32 ; 
  1653.       incr ( j ) ; 
  1654.     } 
  1655.     lab32: putfmtint ( l - k ) ; 
  1656.     dumpthings ( eqtb [ k ] , l - k ) ; 
  1657.     k = j + 1 ; 
  1658.     putfmtint ( k - l ) ; 
  1659.   } while ( ! ( k > 5976 ) ) ; 
  1660.   putfmtint ( parloc ) ; 
  1661.   putfmtint ( writeloc ) ; 
  1662.   putfmtint ( hashused ) ; 
  1663.   cscount = 3257 - hashused ; 
  1664.   {register integer for_end; p = 258 ; for_end = hashused ; if ( p <= 
  1665.   for_end) do 
  1666.     if ( hash [ p ] .v.RH != 0 ) 
  1667.     {
  1668.       putfmtint ( p ) ; 
  1669.       putfmthh ( hash [ p ] ) ; 
  1670.       incr ( cscount ) ; 
  1671.     } 
  1672.   while ( p++ < for_end ) ; } 
  1673.   dumpthings ( hash [ hashused + 1 ] , 3524 - hashused ) ; 
  1674.   putfmtint ( cscount ) ; 
  1675.   println () ; 
  1676.   printint ( cscount ) ; 
  1677.   print ( 1108 ) ; 
  1678.   putfmtint ( fmemptr ) ; 
  1679.   {
  1680.     dumpthings ( fontinfo [ 0 ] , fmemptr ) ; 
  1681.     putfmtint ( fontptr ) ; 
  1682.     dumpthings ( fontcheck [ 0 ] , fontptr + 1 ) ; 
  1683.     dumpthings ( fontsize [ 0 ] , fontptr + 1 ) ; 
  1684.     dumpthings ( fontdsize [ 0 ] , fontptr + 1 ) ; 
  1685.     dumpthings ( fontparams [ 0 ] , fontptr + 1 ) ; 
  1686.     dumpthings ( hyphenchar [ 0 ] , fontptr + 1 ) ; 
  1687.     dumpthings ( skewchar [ 0 ] , fontptr + 1 ) ; 
  1688.     dumpthings ( fontname [ 0 ] , fontptr + 1 ) ; 
  1689.     dumpthings ( fontarea [ 0 ] , fontptr + 1 ) ; 
  1690.     dumpthings ( fontbc [ 0 ] , fontptr + 1 ) ; 
  1691.     dumpthings ( fontec [ 0 ] , fontptr + 1 ) ; 
  1692.     dumpthings ( charbase [ 0 ] , fontptr + 1 ) ; 
  1693.     dumpthings ( widthbase [ 0 ] , fontptr + 1 ) ; 
  1694.     dumpthings ( heightbase [ 0 ] , fontptr + 1 ) ; 
  1695.     dumpthings ( depthbase [ 0 ] , fontptr + 1 ) ; 
  1696.     dumpthings ( italicbase [ 0 ] , fontptr + 1 ) ; 
  1697.     dumpthings ( ligkernbase [ 0 ] , fontptr + 1 ) ; 
  1698.     dumpthings ( kernbase [ 0 ] , fontptr + 1 ) ; 
  1699.     dumpthings ( extenbase [ 0 ] , fontptr + 1 ) ; 
  1700.     dumpthings ( parambase [ 0 ] , fontptr + 1 ) ; 
  1701.     dumpthings ( fontglue [ 0 ] , fontptr + 1 ) ; 
  1702.     {register integer for_end; k = 0 ; for_end = fontptr ; if ( k <= for_end) 
  1703.     do 
  1704.       {
  1705.     printnl ( 1111 ) ; 
  1706.     printesc ( hash [ 3268 + k ] .v.RH ) ; 
  1707.     printchar ( 61 ) ; 
  1708.     printfilename ( fontname [ k ] , fontarea [ k ] , 206 ) ; 
  1709.     if ( fontsize [ k ] != fontdsize [ k ] ) 
  1710.     {
  1711.       print ( 598 ) ; 
  1712.       printscaled ( fontsize [ k ] ) ; 
  1713.       print ( 262 ) ; 
  1714.     } 
  1715.       } 
  1716.     while ( k++ < for_end ) ; } 
  1717.   } 
  1718.   println () ; 
  1719.   printint ( fmemptr - 7 ) ; 
  1720.   print ( 1109 ) ; 
  1721.   printint ( fontptr - 0 ) ; 
  1722.   print ( 1110 ) ; 
  1723.   if ( fontptr != 1 ) 
  1724.   printchar ( 115 ) ; 
  1725.   putfmtint ( hyphcount ) ; 
  1726.   {register integer for_end; k = 0 ; for_end = 307 ; if ( k <= for_end) do 
  1727.     if ( hyphword [ k ] != 0 ) 
  1728.     {
  1729.       putfmtint ( k ) ; 
  1730.       putfmtint ( hyphword [ k ] ) ; 
  1731.       putfmtint ( hyphlist [ k ] ) ; 
  1732.     } 
  1733.   while ( k++ < for_end ) ; } 
  1734.   putfmtint ( triemax ) ; 
  1735.   dumpthings ( trie [ 0 ] , triemax + 1 ) ; 
  1736.   putfmtint ( trieopptr ) ; 
  1737.   dumpthings ( hyfdistance [ 1 ] , trieopptr - 0 ) ; 
  1738.   dumpthings ( hyfnum [ 1 ] , trieopptr - 0 ) ; 
  1739.   dumpthings ( hyfnext [ 1 ] , trieopptr - 0 ) ; 
  1740.   println () ; 
  1741.   printint ( hyphcount ) ; 
  1742.   print ( 1112 ) ; 
  1743.   if ( hyphcount != 1 ) 
  1744.   printchar ( 115 ) ; 
  1745.   printnl ( 1113 ) ; 
  1746.   printint ( triemax ) ; 
  1747.   print ( 1114 ) ; 
  1748.   printint ( trieopptr ) ; 
  1749.   print ( 1115 ) ; 
  1750.   if ( trieopptr != 1 ) 
  1751.   printchar ( 115 ) ; 
  1752.   putfmtint ( interaction ) ; 
  1753.   putfmtint ( formatident ) ; 
  1754.   putfmtint ( 69069L ) ; 
  1755.   eqtb [ 5298 ] .cint = 0 ; 
  1756.   wclose ( fmtfile ) ; 
  1757. #endif /* INITEX */
  1758. finalcleanup () {
  1759.     /* 10 */ finalcleanup_regmem 
  1760.   smallnumber c  ; 
  1761.   c = curchr ; 
  1762.   if ( jobname == 0 ) 
  1763.   openlogfile () ; 
  1764.   if ( curlevel > 1 ) 
  1765.   {
  1766.     printnl ( 40 ) ; 
  1767.     printesc ( 1121 ) ; 
  1768.     print ( 1122 ) ; 
  1769.     printint ( curlevel - 1 ) ; 
  1770.     printchar ( 41 ) ; 
  1771.   } 
  1772.   while ( condptr != 0 ) {
  1773.       
  1774.     printnl ( 40 ) ; 
  1775.     printesc ( 1121 ) ; 
  1776.     print ( 1123 ) ; 
  1777.     printcmdchr ( 104 , curif ) ; 
  1778.     if ( ifline != 0 ) 
  1779.     {
  1780.       print ( 1124 ) ; 
  1781.       printint ( ifline ) ; 
  1782.     } 
  1783.     print ( 1125 ) ; 
  1784.     ifline = mem [ condptr + 1 ] .cint ; 
  1785.     curif = mem [ condptr ] .hh.b1 ; 
  1786.     condptr = mem [ condptr ] .hh .v.RH ; 
  1787.   } 
  1788.   if ( history != 0 ) 
  1789.   if ( ( ( history == 1 ) || ( interaction < 3 ) ) ) 
  1790.   if ( selector == 19 ) 
  1791.   {
  1792.     selector = 17 ; 
  1793.     printnl ( 1126 ) ; 
  1794.     selector = 19 ; 
  1795.   } 
  1796.   if ( c == 1 ) 
  1797.   {
  1798.     ;
  1799. #ifdef INITEX
  1800.     storefmtfile () ; 
  1801.     return ; 
  1802. #endif /* INITEX */
  1803.     printnl ( 1127 ) ; 
  1804.     return ; 
  1805.   } 
  1806. #ifdef INITEX
  1807. initprim () {
  1808.     initprim_regmem 
  1809.   nonewcontrolsequence = false ; 
  1810.   primitive ( 241 , 74 , 3526 ) ; 
  1811.   primitive ( 242 , 74 , 3527 ) ; 
  1812.   primitive ( 243 , 74 , 3528 ) ; 
  1813.   primitive ( 244 , 74 , 3529 ) ; 
  1814.   primitive ( 245 , 74 , 3530 ) ; 
  1815.   primitive ( 246 , 74 , 3531 ) ; 
  1816.   primitive ( 247 , 74 , 3532 ) ; 
  1817.   primitive ( 248 , 74 , 3533 ) ; 
  1818.   primitive ( 249 , 74 , 3534 ) ; 
  1819.   primitive ( 250 , 74 , 3535 ) ; 
  1820.   primitive ( 251 , 74 , 3536 ) ; 
  1821.   primitive ( 252 , 74 , 3537 ) ; 
  1822.   primitive ( 253 , 74 , 3538 ) ; 
  1823.   primitive ( 254 , 74 , 3539 ) ; 
  1824.   primitive ( 255 , 74 , 3540 ) ; 
  1825.   primitive ( 256 , 75 , 3541 ) ; 
  1826.   primitive ( 257 , 75 , 3542 ) ; 
  1827.   primitive ( 258 , 75 , 3543 ) ; 
  1828.   primitive ( 263 , 71 , 4057 ) ; 
  1829.   primitive ( 264 , 71 , 4058 ) ; 
  1830.   primitive ( 265 , 71 , 4059 ) ; 
  1831.   primitive ( 266 , 71 , 4060 ) ; 
  1832.   primitive ( 267 , 71 , 4061 ) ; 
  1833.   primitive ( 268 , 71 , 4062 ) ; 
  1834.   primitive ( 269 , 71 , 4063 ) ; 
  1835.   primitive ( 270 , 71 , 4064 ) ; 
  1836.   primitive ( 271 , 71 , 4065 ) ; 
  1837.   primitive ( 285 , 72 , 5267 ) ; 
  1838.   primitive ( 286 , 72 , 5268 ) ; 
  1839.   primitive ( 287 , 72 , 5269 ) ; 
  1840.   primitive ( 288 , 72 , 5270 ) ; 
  1841.   primitive ( 289 , 72 , 5271 ) ; 
  1842.   primitive ( 290 , 72 , 5272 ) ; 
  1843.   primitive ( 291 , 72 , 5273 ) ; 
  1844.   primitive ( 292 , 72 , 5274 ) ; 
  1845.   primitive ( 293 , 72 , 5275 ) ; 
  1846.   primitive ( 294 , 72 , 5276 ) ; 
  1847.   primitive ( 295 , 72 , 5277 ) ; 
  1848.   primitive ( 296 , 72 , 5278 ) ; 
  1849.   primitive ( 297 , 72 , 5279 ) ; 
  1850.   primitive ( 298 , 72 , 5280 ) ; 
  1851.   primitive ( 299 , 72 , 5281 ) ; 
  1852.   primitive ( 300 , 72 , 5282 ) ; 
  1853.   primitive ( 301 , 72 , 5283 ) ; 
  1854.   primitive ( 302 , 72 , 5284 ) ; 
  1855.   primitive ( 303 , 72 , 5285 ) ; 
  1856.   primitive ( 304 , 72 , 5286 ) ; 
  1857.   primitive ( 305 , 72 , 5287 ) ; 
  1858.   primitive ( 306 , 72 , 5288 ) ; 
  1859.   primitive ( 307 , 72 , 5289 ) ; 
  1860.   primitive ( 308 , 72 , 5290 ) ; 
  1861.   primitive ( 309 , 72 , 5291 ) ; 
  1862.   primitive ( 310 , 72 , 5292 ) ; 
  1863.   primitive ( 311 , 72 , 5293 ) ; 
  1864.   primitive ( 312 , 72 , 5294 ) ; 
  1865.   primitive ( 313 , 72 , 5295 ) ; 
  1866.   primitive ( 314 , 72 , 5296 ) ; 
  1867.   primitive ( 315 , 72 , 5297 ) ; 
  1868.   primitive ( 316 , 72 , 5298 ) ; 
  1869.   primitive ( 317 , 72 , 5299 ) ; 
  1870.   primitive ( 318 , 72 , 5300 ) ; 
  1871.   primitive ( 319 , 72 , 5301 ) ; 
  1872.   primitive ( 320 , 72 , 5302 ) ; 
  1873.   primitive ( 321 , 72 , 5303 ) ; 
  1874.   primitive ( 322 , 72 , 5304 ) ; 
  1875.   primitive ( 323 , 72 , 5305 ) ; 
  1876.   primitive ( 324 , 72 , 5306 ) ; 
  1877.   primitive ( 325 , 72 , 5307 ) ; 
  1878.   primitive ( 326 , 72 , 5308 ) ; 
  1879.   primitive ( 327 , 72 , 5309 ) ; 
  1880.   primitive ( 328 , 72 , 5310 ) ; 
  1881.   primitive ( 329 , 72 , 5311 ) ; 
  1882.   primitive ( 330 , 72 , 5312 ) ; 
  1883.   primitive ( 331 , 72 , 5313 ) ; 
  1884.   primitive ( 332 , 72 , 5314 ) ; 
  1885.   primitive ( 333 , 72 , 5315 ) ; 
  1886.   primitive ( 334 , 72 , 5316 ) ; 
  1887.   primitive ( 338 , 73 , 5701 ) ; 
  1888.   primitive ( 339 , 73 , 5702 ) ; 
  1889.   primitive ( 340 , 73 , 5703 ) ; 
  1890.   primitive ( 341 , 73 , 5704 ) ; 
  1891.   primitive ( 342 , 73 , 5705 ) ; 
  1892.   primitive ( 343 , 73 , 5706 ) ; 
  1893.   primitive ( 344 , 73 , 5707 ) ; 
  1894.   primitive ( 345 , 73 , 5708 ) ; 
  1895.   primitive ( 346 , 73 , 5709 ) ; 
  1896.   primitive ( 347 , 73 , 5710 ) ; 
  1897.   primitive ( 348 , 73 , 5711 ) ; 
  1898.   primitive ( 349 , 73 , 5712 ) ; 
  1899.   primitive ( 350 , 73 , 5713 ) ; 
  1900.   primitive ( 351 , 73 , 5714 ) ; 
  1901.   primitive ( 352 , 73 , 5715 ) ; 
  1902.   primitive ( 353 , 73 , 5716 ) ; 
  1903.   primitive ( 354 , 73 , 5717 ) ; 
  1904.   primitive ( 355 , 73 , 5718 ) ; 
  1905.   primitive ( 356 , 73 , 5719 ) ; 
  1906.   primitive ( 357 , 73 , 5720 ) ; 
  1907.   primitive ( 32 , 64 , 0 ) ; 
  1908.   primitive ( 47 , 44 , 0 ) ; 
  1909.   primitive ( 367 , 45 , 0 ) ; 
  1910.   primitive ( 368 , 89 , 0 ) ; 
  1911.   primitive ( 369 , 40 , 0 ) ; 
  1912.   primitive ( 370 , 41 , 0 ) ; 
  1913.   primitive ( 371 , 61 , 0 ) ; 
  1914.   primitive ( 372 , 16 , 0 ) ; 
  1915.   primitive ( 363 , 106 , 0 ) ; 
  1916.   primitive ( 373 , 15 , 0 ) ; 
  1917.   primitive ( 374 , 91 , 0 ) ; 
  1918.   primitive ( 364 , 66 , 0 ) ; 
  1919.   primitive ( 375 , 62 , 0 ) ; 
  1920.   hash [ 3260 ] .v.RH = 375 ; 
  1921.   eqtb [ 3260 ] = eqtb [ curval ] ; 
  1922.   primitive ( 376 , 101 , 0 ) ; 
  1923.   primitive ( 377 , 87 , 0 ) ; 
  1924.   primitive ( 378 , 76 , 0 ) ; 
  1925.   primitive ( 379 , 32 , 0 ) ; 
  1926.   primitive ( 380 , 36 , 0 ) ; 
  1927.   primitive ( 381 , 39 , 0 ) ; 
  1928.   primitive ( 198 , 37 , 0 ) ; 
  1929.   primitive ( 219 , 18 , 0 ) ; 
  1930.   primitive ( 382 , 46 , 0 ) ; 
  1931.   primitive ( 383 , 17 , 0 ) ; 
  1932.   primitive ( 384 , 54 , 0 ) ; 
  1933.   primitive ( 385 , 90 , 0 ) ; 
  1934.   primitive ( 386 , 34 , 0 ) ; 
  1935.   primitive ( 387 , 102 , 0 ) ; 
  1936.   primitive ( 203 , 55 , 0 ) ; 
  1937.   primitive ( 388 , 63 , 0 ) ; 
  1938.   primitive ( 273 , 83 , 0 ) ; 
  1939.   primitive ( 389 , 42 , 0 ) ; 
  1940.   primitive ( 390 , 79 , 0 ) ; 
  1941.   primitive ( 391 , 65 , 0 ) ; 
  1942.   primitive ( 392 , 95 , 0 ) ; 
  1943.   primitive ( 393 , 0 , 256 ) ; 
  1944.   hash [ 3265 ] .v.RH = 393 ; 
  1945.   eqtb [ 3265 ] = eqtb [ curval ] ; 
  1946.   primitive ( 394 , 97 , 0 ) ; 
  1947.   primitive ( 395 , 108 , 0 ) ; 
  1948.   primitive ( 272 , 70 , 0 ) ; 
  1949.   primitive ( 220 , 38 , 0 ) ; 
  1950.   primitive ( 396 , 33 , 0 ) ; 
  1951.   primitive ( 397 , 56 , 0 ) ; 
  1952.   primitive ( 398 , 35 , 0 ) ; 
  1953.   primitive ( 455 , 13 , 0 ) ; 
  1954.   parloc = curval ; 
  1955.   partoken = 4096 + parloc ; 
  1956.   primitive ( 487 , 103 , 0 ) ; 
  1957.   primitive ( 488 , 103 , 1 ) ; 
  1958.   primitive ( 489 , 109 , 0 ) ; 
  1959.   primitive ( 490 , 109 , 1 ) ; 
  1960.   primitive ( 491 , 109 , 2 ) ; 
  1961.   primitive ( 492 , 109 , 3 ) ; 
  1962.   primitive ( 493 , 109 , 4 ) ; 
  1963.   primitive ( 336 , 88 , 0 ) ; 
  1964.   primitive ( 359 , 88 , 1 ) ; 
  1965.   primitive ( 260 , 88 , 2 ) ; 
  1966.   primitive ( 261 , 88 , 3 ) ; 
  1967.   primitive ( 526 , 78 , 101 ) ; 
  1968.   primitive ( 527 , 78 , 1 ) ; 
  1969.   primitive ( 528 , 81 , 0 ) ; 
  1970.   primitive ( 529 , 81 , 1 ) ; 
  1971.   primitive ( 530 , 82 , 1 ) ; 
  1972.   primitive ( 531 , 82 , 3 ) ; 
  1973.   primitive ( 532 , 82 , 2 ) ; 
  1974.   primitive ( 533 , 69 , 0 ) ; 
  1975.   primitive ( 534 , 69 , 1 ) ; 
  1976.   primitive ( 535 , 69 , 2 ) ; 
  1977.   primitive ( 592 , 107 , 0 ) ; 
  1978.   primitive ( 593 , 107 , 1 ) ; 
  1979.   primitive ( 594 , 107 , 2 ) ; 
  1980.   primitive ( 595 , 107 , 3 ) ; 
  1981.   primitive ( 596 , 107 , 4 ) ; 
  1982.   primitive ( 597 , 107 , 5 ) ; 
  1983.   primitive ( 613 , 104 , 0 ) ; 
  1984.   primitive ( 614 , 104 , 1 ) ; 
  1985.   primitive ( 615 , 104 , 2 ) ; 
  1986.   primitive ( 616 , 104 , 3 ) ; 
  1987.   primitive ( 617 , 104 , 4 ) ; 
  1988.   primitive ( 618 , 104 , 5 ) ; 
  1989.   primitive ( 619 , 104 , 6 ) ; 
  1990.   primitive ( 620 , 104 , 7 ) ; 
  1991.   primitive ( 621 , 104 , 8 ) ; 
  1992.   primitive ( 622 , 104 , 9 ) ; 
  1993.   primitive ( 623 , 104 , 10 ) ; 
  1994.   primitive ( 624 , 104 , 11 ) ; 
  1995.   primitive ( 625 , 104 , 12 ) ; 
  1996.   primitive ( 626 , 104 , 13 ) ; 
  1997.   primitive ( 627 , 104 , 14 ) ; 
  1998.   primitive ( 628 , 104 , 15 ) ; 
  1999.   primitive ( 629 , 104 , 16 ) ; 
  2000.   primitive ( 630 , 105 , 2 ) ; 
  2001.   hash [ 3262 ] .v.RH = 630 ; 
  2002.   eqtb [ 3262 ] = eqtb [ curval ] ; 
  2003.   primitive ( 631 , 105 , 4 ) ; 
  2004.   primitive ( 632 , 105 , 3 ) ; 
  2005.   primitive ( 654 , 86 , 0 ) ; 
  2006.   hash [ 3268 ] .v.RH = 654 ; 
  2007.   eqtb [ 3268 ] = eqtb [ curval ] ; 
  2008.   primitive ( 751 , 4 , 128 ) ; 
  2009.   primitive ( 752 , 5 , 129 ) ; 
  2010.   hash [ 3259 ] .v.RH = 752 ; 
  2011.   eqtb [ 3259 ] = eqtb [ curval ] ; 
  2012.   primitive ( 753 , 5 , 130 ) ; 
  2013.   hash [ 3263 ] .v.RH = 754 ; 
  2014.   hash [ 3264 ] .v.RH = 754 ; 
  2015.   eqtb [ 3264 ] .hh.b0 = 9 ; 
  2016.   eqtb [ 3264 ] .hh .v.RH = memtop - 11 ; 
  2017.   eqtb [ 3264 ] .hh.b1 = 1 ; 
  2018.   eqtb [ 3263 ] = eqtb [ 3264 ] ; 
  2019.   eqtb [ 3263 ] .hh.b0 = 114 ; 
  2020.   primitive ( 818 , 80 , 0 ) ; 
  2021.   primitive ( 819 , 80 , 1 ) ; 
  2022.   primitive ( 820 , 80 , 2 ) ; 
  2023.   primitive ( 821 , 80 , 3 ) ; 
  2024.   primitive ( 822 , 80 , 4 ) ; 
  2025.   primitive ( 823 , 80 , 5 ) ; 
  2026.   primitive ( 824 , 80 , 6 ) ; 
  2027.   primitive ( 825 , 80 , 7 ) ; 
  2028.   primitive ( 873 , 14 , 0 ) ; 
  2029.   primitive ( 874 , 14 , 1 ) ; 
  2030.   primitive ( 875 , 26 , 4 ) ; 
  2031.   primitive ( 876 , 26 , 0 ) ; 
  2032.   primitive ( 877 , 26 , 1 ) ; 
  2033.   primitive ( 878 , 26 , 2 ) ; 
  2034.   primitive ( 879 , 26 , 3 ) ; 
  2035.   primitive ( 880 , 27 , 4 ) ; 
  2036.   primitive ( 881 , 27 , 0 ) ; 
  2037.   primitive ( 882 , 27 , 1 ) ; 
  2038.   primitive ( 883 , 27 , 2 ) ; 
  2039.   primitive ( 884 , 27 , 3 ) ; 
  2040.   primitive ( 204 , 28 , 5 ) ; 
  2041.   primitive ( 208 , 29 , 1 ) ; 
  2042.   primitive ( 210 , 30 , 99 ) ; 
  2043.   primitive ( 902 , 21 , 1 ) ; 
  2044.   primitive ( 903 , 21 , 0 ) ; 
  2045.   primitive ( 904 , 22 , 1 ) ; 
  2046.   primitive ( 905 , 22 , 0 ) ; 
  2047.   primitive ( 274 , 20 , 0 ) ; 
  2048.   primitive ( 906 , 20 , 1 ) ; 
  2049.   primitive ( 907 , 20 , 2 ) ; 
  2050.   primitive ( 813 , 20 , 3 ) ; 
  2051.   primitive ( 908 , 20 , 4 ) ; 
  2052.   primitive ( 815 , 20 , 5 ) ; 
  2053.   primitive ( 909 , 20 , 105 ) ; 
  2054.   primitive ( 910 , 31 , 99 ) ; 
  2055.   primitive ( 911 , 31 , 100 ) ; 
  2056.   primitive ( 912 , 31 , 101 ) ; 
  2057.   primitive ( 913 , 31 , 102 ) ; 
  2058.   primitive ( 928 , 43 , 1 ) ; 
  2059.   primitive ( 929 , 43 , 0 ) ; 
  2060.   primitive ( 938 , 25 , 12 ) ; 
  2061.   primitive ( 939 , 25 , 11 ) ; 
  2062.   primitive ( 940 , 25 , 10 ) ; 
  2063.   primitive ( 941 , 23 , 0 ) ; 
  2064.   primitive ( 942 , 23 , 1 ) ; 
  2065.   primitive ( 943 , 24 , 0 ) ; 
  2066.   primitive ( 944 , 24 , 1 ) ; 
  2067.   primitive ( 45 , 47 , 1 ) ; 
  2068.   primitive ( 217 , 47 , 0 ) ; 
  2069.   primitive ( 975 , 48 , 0 ) ; 
  2070.   primitive ( 976 , 48 , 1 ) ; 
  2071.   primitive ( 719 , 50 , 16 ) ; 
  2072.   primitive ( 720 , 50 , 17 ) ; 
  2073.   primitive ( 721 , 50 , 18 ) ; 
  2074.   primitive ( 722 , 50 , 19 ) ; 
  2075.   primitive ( 723 , 50 , 20 ) ; 
  2076.   primitive ( 724 , 50 , 21 ) ; 
  2077.   primitive ( 725 , 50 , 22 ) ; 
  2078.   primitive ( 726 , 50 , 23 ) ; 
  2079.   primitive ( 728 , 50 , 26 ) ; 
  2080.   primitive ( 727 , 50 , 27 ) ; 
  2081.   primitive ( 977 , 51 , 0 ) ; 
  2082.   primitive ( 731 , 51 , 1 ) ; 
  2083.   primitive ( 732 , 51 , 2 ) ; 
  2084.   primitive ( 714 , 53 , 0 ) ; 
  2085.   primitive ( 715 , 53 , 2 ) ; 
  2086.   primitive ( 716 , 53 , 4 ) ; 
  2087.   primitive ( 717 , 53 , 6 ) ; 
  2088.   primitive ( 995 , 52 , 0 ) ; 
  2089.   primitive ( 996 , 52 , 1 ) ; 
  2090.   primitive ( 997 , 52 , 2 ) ; 
  2091.   primitive ( 998 , 52 , 3 ) ; 
  2092.   primitive ( 999 , 52 , 4 ) ; 
  2093.   primitive ( 1000 , 52 , 5 ) ; 
  2094.   primitive ( 729 , 49 , 30 ) ; 
  2095.   primitive ( 730 , 49 , 31 ) ; 
  2096.   hash [ 3261 ] .v.RH = 730 ; 
  2097.   eqtb [ 3261 ] = eqtb [ curval ] ; 
  2098.   primitive ( 1019 , 92 , 1 ) ; 
  2099.   primitive ( 1020 , 92 , 2 ) ; 
  2100.   primitive ( 1021 , 92 , 4 ) ; 
  2101.   primitive ( 1022 , 96 , 0 ) ; 
  2102.   primitive ( 1023 , 96 , 1 ) ; 
  2103.   primitive ( 1024 , 96 , 2 ) ; 
  2104.   primitive ( 1025 , 96 , 3 ) ; 
  2105.   primitive ( 1039 , 93 , 0 ) ; 
  2106.   primitive ( 1040 , 93 , 1 ) ; 
  2107.   primitive ( 1041 , 94 , 0 ) ; 
  2108.   primitive ( 1042 , 94 , 1 ) ; 
  2109.   primitive ( 1043 , 94 , 2 ) ; 
  2110.   primitive ( 1044 , 94 , 3 ) ; 
  2111.   primitive ( 1045 , 94 , 4 ) ; 
  2112.   primitive ( 1046 , 94 , 5 ) ; 
  2113.   primitive ( 1047 , 94 , 6 ) ; 
  2114.   primitive ( 280 , 84 , 4627 ) ; 
  2115.   primitive ( 284 , 84 , 5139 ) ; 
  2116.   primitive ( 281 , 84 , 4755 ) ; 
  2117.   primitive ( 282 , 84 , 4883 ) ; 
  2118.   primitive ( 283 , 84 , 5011 ) ; 
  2119.   primitive ( 337 , 84 , 5573 ) ; 
  2120.   primitive ( 277 , 85 , 4579 ) ; 
  2121.   primitive ( 278 , 85 , 4595 ) ; 
  2122.   primitive ( 279 , 85 , 4611 ) ; 
  2123.   primitive ( 793 , 98 , 0 ) ; 
  2124.   primitive ( 803 , 98 , 1 ) ; 
  2125.   primitive ( 1063 , 77 , 0 ) ; 
  2126.   primitive ( 1064 , 77 , 1 ) ; 
  2127.   primitive ( 143 , 99 , 0 ) ; 
  2128.   primitive ( 144 , 99 , 1 ) ; 
  2129.   primitive ( 145 , 99 , 2 ) ; 
  2130.   primitive ( 1073 , 99 , 3 ) ; 
  2131.   primitive ( 1074 , 60 , 1 ) ; 
  2132.   primitive ( 1075 , 60 , 0 ) ; 
  2133.   primitive ( 1076 , 58 , 0 ) ; 
  2134.   primitive ( 1077 , 58 , 1 ) ; 
  2135.   primitive ( 1083 , 57 , 4755 ) ; 
  2136.   primitive ( 1084 , 57 , 4883 ) ; 
  2137.   primitive ( 1085 , 19 , 0 ) ; 
  2138.   primitive ( 1086 , 19 , 1 ) ; 
  2139.   primitive ( 1087 , 19 , 2 ) ; 
  2140.   primitive ( 1088 , 19 , 3 ) ; 
  2141.   primitive ( 1129 , 59 , 0 ) ; 
  2142.   primitive ( 452 , 59 , 1 ) ; 
  2143.   writeloc = curval ; 
  2144.   primitive ( 1130 , 59 , 2 ) ; 
  2145.   primitive ( 1131 , 59 , 3 ) ; 
  2146.   primitive ( 1132 , 59 , 4 ) ; 
  2147.   nonewcontrolsequence = true ; 
  2148. #endif /* INITEX */
  2149. texbody () {
  2150.     /* 1 9998 9999 */ texbody_regmem 
  2151.   integer bufindx  ; 
  2152.   history = 3 ; 
  2153.   if ( readyalready == 314159L ) 
  2154.   goto lab1 ; 
  2155.   setpaths () ; 
  2156.   bad = 0 ; 
  2157.   if ( ( halferrorline < 30 ) || ( halferrorline > errorline - 15 ) ) 
  2158.   bad = 1 ; 
  2159.   if ( maxprintline < 60 ) 
  2160.   bad = 2 ; 
  2161.   if ( dvibufsize % 8 != 0 ) 
  2162.   bad = 3 ; 
  2163.   if ( 1100 > memtop ) 
  2164.   bad = 4 ; 
  2165.   if ( 2551 > 3000 ) 
  2166.   bad = 5 ; 
  2167.   if ( maxinopen >= 128 ) 
  2168.   bad = 6 ; 
  2169.     ;
  2170. #ifdef INITEX
  2171.   if ( ( memmin != 0 ) || ( memmax != memtop ) ) 
  2172.   bad = 10 ; 
  2173. #endif /* INITEX */
  2174.   if ( ( memmin > 0 ) || ( memmax < memtop ) ) 
  2175.   bad = 10 ; 
  2176.   if ( ( 0 > 0 ) || ( 255 < 127 ) ) 
  2177.   bad = 11 ; 
  2178.   if ( ( 0 > 0 ) || ( 65535L < 32767 ) ) 
  2179.   bad = 12 ; 
  2180.   if ( ( 0 < 0 ) || ( 255 > 65535L ) ) 
  2181.   bad = 13 ; 
  2182.   if ( ( memmin < 0 ) || ( memmax >= 65535L ) || ( -0 - memmin > 65536L ) ) 
  2183.   bad = 14 ; 
  2184.   if ( ( 0 < 0 ) || ( fontmax > 255 ) ) 
  2185.   bad = 15 ; 
  2186.   if ( fontmax > 256 ) 
  2187.   bad = 16 ; 
  2188.   if ( ( savesize > 65535L ) || ( maxstrings > 65535L ) ) 
  2189.   bad = 17 ; 
  2190.   if ( bufsize > 65535L ) 
  2191.   bad = 18 ; 
  2192.   if ( 255 < 255 ) 
  2193.   bad = 19 ; 
  2194.   if ( 7621 > 65535L ) 
  2195.   bad = 21 ; 
  2196.   if ( 9 > filenamesize ) 
  2197.   bad = 31 ; 
  2198.   if ( 2 * 65535L < memtop - memmin ) 
  2199.   bad = 41 ; 
  2200.   if ( bad > 0 ) 
  2201.   {
  2202. #ifdef RISC_OS
  2203.   /* PENDING: FIX THIS BY HAND */
  2204. /*
  2205.     (void) fprintf( stdout , "%s%s%ld\n",  "Ouch---my internal constants have been clobbered!" ,     "---case " , (long)bad ) ; 
  2206.  */
  2207. #else
  2208.     (void) fprintf( stdout , "%s%s%ld\n",  "Ouch---my internal constants have been clobbered!" ,     "---case " , (long)bad ) ; 
  2209. #endif
  2210.     goto lab9999 ; 
  2211.   } 
  2212.   initialize () ; 
  2213.     ;
  2214. #ifdef INITEX
  2215.   if ( ! getstringsstarted () ) 
  2216.   goto lab9999 ; 
  2217.   initprim () ; 
  2218. #endif /* INITEX */
  2219.   readyalready = 314159L ; 
  2220.   lab1: selector = 17 ; 
  2221.   tally = 0 ; 
  2222.   termoffset = 0 ; 
  2223.   fileoffset = 0 ; 
  2224. #ifdef RISC_OS
  2225.   (void) Fput(stdout, "This is TeX, C Version 2.9"); 
  2226.                                       /* ADDED a FPUT macro for this case! */
  2227. #else
  2228.   (void) fprintf( stdout ,  "%s", "This is TeX, C Version 2.9" ) ; 
  2229. #endif
  2230.   if ( formatident == 0 ) 
  2231. #ifdef RISC_OS
  2232.   (void) Fputs(stdout, " (no format preloaded)") ; 
  2233. #else
  2234.   (void) fprintf( stdout , "%s\n",  " (no format preloaded)" ) ; 
  2235. #endif
  2236.   else {
  2237.       
  2238.     print ( formatident ) ; 
  2239.     println () ; 
  2240.   } 
  2241.   termflush ( stdout ) ; 
  2242.   jobname = 0 ; 
  2243.   nameinprogress = false ; 
  2244.   outputfilename = 0 ; 
  2245.   {
  2246.     {
  2247.       inputptr = 0 ; 
  2248.       maxinstack = 0 ; 
  2249.       inopen = 0 ; 
  2250.       maxbufstack = 0 ; 
  2251.       paramptr = 0 ; 
  2252.       maxparamstack = 0 ; 
  2253.       bufindx = bufsize ; 
  2254.       do {
  2255.       buffer [ bufindx ] = 0 ; 
  2256.     decr ( bufindx ) ; 
  2257.       } while ( ! ( bufindx == 0 ) ) ; 
  2258.       scannerstatus = 0 ; 
  2259.       warningindex = 0 ; 
  2260.       first = 1 ; 
  2261.       curinput .statefield = 33 ; 
  2262.       curinput .startfield = 1 ; 
  2263.       curinput .indexfield = 0 ; 
  2264.       line = 0 ; 
  2265.       curinput .namefield = 0 ; 
  2266.       forceeof = false ; 
  2267.       alignstate = 1000000L ; 
  2268.       if ( ! initterminal () ) 
  2269.       goto lab9999 ; 
  2270.       curinput .limitfield = last ; 
  2271.       first = last + 1 ; 
  2272.     } 
  2273.     if ( ( formatident == 0 ) || ( buffer [ curinput .locfield ] == 38 ) ) 
  2274.     {
  2275.       if ( formatident != 0 ) 
  2276.       initialize () ; 
  2277.       if ( ! openfmtfile () ) 
  2278.       goto lab9999 ; 
  2279.       if ( ! loadfmtfile () ) 
  2280.       {
  2281.     wclose ( fmtfile ) ; 
  2282.     goto lab9999 ; 
  2283.       } 
  2284.       wclose ( fmtfile ) ; 
  2285.       while ( ( curinput .locfield < curinput .limitfield ) && ( buffer [ 
  2286.       curinput .locfield ] == 32 ) ) incr ( curinput .locfield ) ; 
  2287.     } 
  2288.     if ( ( eqtb [ 5315 ] .cint < 0 ) || ( eqtb [ 5315 ] .cint > 127 ) ) 
  2289.     decr ( curinput .limitfield ) ; 
  2290.     else buffer [ curinput .limitfield ] = eqtb [ 5315 ] .cint ; 
  2291.     dateandtime ( eqtb [ 5287 ] .cint , eqtb [ 5288 ] .cint , eqtb [ 5289 ] 
  2292.     .cint , eqtb [ 5290 ] .cint ) ; 
  2293.     magicoffset = strstart [ 745 ] - 9 * 16 ; 
  2294.     if ( interaction == 0 ) 
  2295.     selector = 16 ; 
  2296.     else selector = 17 ; 
  2297.     if ( ( curinput .locfield < curinput .limitfield ) && ( eqtb [ 4627 + 
  2298.     buffer [ curinput .locfield ] ] .hh .v.RH != 0 ) ) 
  2299.     startinput () ; 
  2300.   } 
  2301.   initstrptr = strptr ; 
  2302.   initpoolptr = poolptr ; 
  2303.   history = 0 ; 
  2304.   maincontrol () ; 
  2305.   finalcleanup () ; 
  2306.   lab9998: closefilesandtermina () ; 
  2307.   lab9999: {
  2308.       
  2309.     termflush ( stdout ) ; 
  2310.     readyalready = 0 ; 
  2311.     if ( ( history != 0 ) && ( history != 1 ) ) {
  2312.       uexit ( 1 ) ; 
  2313.     } else {
  2314.       uexit ( 0 ) ; 
  2315.     }
  2316.   } 
  2317.